Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TImage 
V
    Опции темы
RapMan
Дата 14.8.2008, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 13.6.2008

Репутация: нет
Всего: нет



Доброе время суток!
У меня есть TImage и есть пару областей в виде кругов (circle), когда я кликаю на ету область окриваеться другая форма Form2. Как ето сделать?
Зарание благодарен
--------------------
здесь хреновые модераторы...
PM MAIL   Вверх
mr.Anderson
Дата 14.8.2008, 22:11 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



Обрабатывай OnClick на нужной области и все.

Добавлено через 5 минут и 44 секунды
ЗЫ если круглые области нарисованы с помощью TCanvas, то обрабатывай клик на самом изображении, а при клике смотри, куда тыкнули - на цветной пиксел (закрашенная круглая область) или же на прозрачный/другого цвета, и в зависимости от этого делай, что тебе нужно.

Это сообщение отредактировал(а) mr.Anderson - 14.8.2008, 22:11


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
RapMan
Дата 14.8.2008, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 13.6.2008

Репутация: нет
Всего: нет



область - не видима, то что OnClick или OnMouseDown/OnMouseUp я сам понимаю, но как проверить  или я в областе кликнул или нет? можно ето проверить используя множины и оператор in ?
--------------------
здесь хреновые модераторы...
PM MAIL   Вверх
VICTAR
Дата 14.8.2008, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 10
Всего: 80



Цитата(RapMan @  14.8.2008,  23:35 Найти цитируемый пост)
но как проверить  или я в областе кликнул или нет? 

PtInRegion
PM MAIL   Вверх
RapMan
Дата 15.8.2008, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 13.6.2008

Репутация: нет
Всего: нет



спасибо! smile 
--------------------
здесь хреновые модераторы...
PM MAIL   Вверх
mr.Anderson
Дата 15.8.2008, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



Ааа, вон что требовалось. Тогда в вопрос не въехал, извините за некорректный ответ.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
RapMan
Дата 15.8.2008, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 13.6.2008

Репутация: нет
Всего: нет



продолжение вопроса  smile 
у меня есть TBitMap в которий загружен рисунок, как мне получить HRND чтобы потом определять или мышка на етой области или нет?


--------------------
здесь хреновые модераторы...
PM MAIL   Вверх
VICTAR
Дата 16.8.2008, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 10
Всего: 80



Для начала нужно создать этот самый регион. 
Про регионы можно почитать в drkb.
PM MAIL   Вверх
RapMan
Дата 16.8.2008, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 13.6.2008

Репутация: нет
Всего: нет



ето я понимаю, но как ето сделать?
Вот что я хочу реализовать:
У меня есть рисунок,  загружаю его в TBitMap делаю Transparent и на все что не Transparent сделать RGN и потом проверять или я нахожусь на етой области (рисунки могут бить разние)
Зарание Спасибо
--------------------
здесь хреновые модераторы...
PM MAIL   Вверх
VICTAR
Дата 16.8.2008, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 10
Всего: 80



По-моему функция из drkb
Код

function BitmapToRgn(Image: TBitmap): HRGN;
var
  TmpRgn: HRGN;
  x, y: Integer;
  ConsecutivePixels: Integer;
  CurrentPixel: TColor;
  CreatedRgns: Integer;
  CurrentColor: TColor;
begin
  CreatedRgns := 0;
  Result := CreateRectRgn(0, 0, Image.Width, Image.Height);
  Inc(CreatedRgns);
  if (Image.Width = 0) or (Image.Height = 0) then
    Exit;
  for y := 0 to Image.Height - 1 do
  begin
    CurrentColor := Image.Canvas.Pixels[0, y];
    ConsecutivePixels := 1;
    for x := 0 to Image.Width - 1 do
    begin
      CurrentPixel := Image.Canvas.Pixels[x, y];
      if CurrentColor = CurrentPixel then
        Inc(ConsecutivePixels)
      else
      begin
        // Входим в новую зону
        if CurrentColor = clWhite then
        begin
          TmpRgn := CreateRectRgn(x - ConsecutivePixels, y, x, y + 1);
          CombineRgn(Result, Result, TmpRgn, RGN_DIFF);
          Inc(CreatedRgns);
          DeleteObject(TmpRgn);
        end;
        CurrentColor := CurrentPixel;
        ConsecutivePixels := 1;
      end;
    end;
    if (CurrentColor = clWhite) and (ConsecutivePixels > 0) then
    begin
      TmpRgn := CreateRectRgn(x - ConsecutivePixels, y, x, y + 1);
      CombineRgn(Result, Result, TmpRgn, RGN_DIFF);
      Inc(CreatedRgns);
      DeleteObject(TmpRgn);
    end;
  end;
end;

зы неплохо бы ее оптимизировать
PM MAIL   Вверх
RapMan
Дата 16.8.2008, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 13.6.2008

Репутация: нет
Всего: нет



Спасибо!!!! smile  я уже переделаю
--------------------
здесь хреновые модераторы...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0507 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.