Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Работа с TImage.


Автор: SkyAngel 6.2.2009, 22:52
В общем такая проблема у меня появилась - необходимо загрузить картинку, и в специально отведённых областях обрабатывать событие OnClick. Всего TImage делиться на 18 не равных частей, которые должны быть в виде окружности. Есть предположения после прочтения примеров немного другого типа в гугле, однако хотелось бы более точный совет =).

Configuration:
CodeGear Rad Studio 2009
Windows Vista Sp1.

Автор: AntonN 6.2.2009, 23:20
по MouseDown определять координаты клика, иметь маску областей (в принципе в качестве цвета можно использовать номер области) и смотреть какой цвет (и номер области) вернулся по клику, в случае удачи "вручную" вызывать некий обработчик (самописную функцию итд).

Автор: SkyAngel 6.2.2009, 23:32
Не пойдёт. Различие цветов невозможно. Все центры окружностей имеют один и тот же цвет, а 6/9/15 ( в зависимости от загружаемой картинки) имеют один и тот же цвет. Мне необходимо "разбить" TImage на части и анализировать событие onClick на этих областях. Но проблема - я не знаю как это сделать.
Жду ещё предложений =)

Автор: Shaggy 7.2.2009, 00:59
CreateEllipticRgn
PtInRegion

Автор: SkyAngel 7.2.2009, 01:34
Цитата(Shaggy @  7.2.2009,  00:59 Найти цитируемый пост)
CreateEllipticRgn
PtInRegion


Всё выдержано в строгости времён СССР. А поподробнее можно? Я уже понял, что необходимо с этими функциями WinAPI работать. Но про окружность я, к примеру, не совсем понял. Какие именно кординаты задаються? Там же вроде их 4 штуки. Поподробнее, пожалуйста =).

Автор: THandle 7.2.2009, 01:57
Так есть же описания:

http://msdn.microsoft.com/en-us/library/dd183496(VS.85).aspx
http://msdn.microsoft.com/en-us/library/dd162883(VS.85).aspx

Что не понятно?

Еще в http://drkb.ru есть примеры.

Автор: SkyAngel 7.2.2009, 13:56
В общем в условиях поставленой задачи гораздо легче воспользоваться дополнительными TImage с Transparent:=True; И обрабатывать событие onClick на них.
P.S. Мне были необходимы другие способы решения данной проблемы. Однако возникает и ествевственный вопрос - как сделать TImage в виде окружности?

Автор: MetalFan 7.2.2009, 19:42
а не легче почитать описание функций, предложенных к использованию? или английский не панима?

Автор: SkyAngel 7.2.2009, 22:07
Цитата(MetalFan @  7.2.2009,  19:42 Найти цитируемый пост)
а не легче почитать описание функций, предложенных к использованию? 


Возможно это я не понял, что я написал, что я спрашивал, есть ли такая функция. Описание какой функции мне смотреть? Название, по идее, должно было за это время ко мне с небес спуститься? =)).
На счёт 
Цитата(SkyAngel @  7.2.2009,  13:56 Найти цитируемый пост)
В общем в условиях поставленой задачи гораздо легче воспользоваться дополнительными TImage

при дальнейшем анализе того, что должен выполнять этот район - я понял, что изначально путь через области был неправильным, так как мне в дальнейшем необходимо будет на эти районы выводить рисунки.
А вот вопрос о TImage неправильной формы остался подвешен... Кто-нибудь компетентен в данном вопросе?

Автор: AntonN 7.2.2009, 22:53
SkyAngel
Цитата

Не пойдёт.

Пойдет. Ты параметры областей знаешь? ну вот на рисуй на маске (на втором битмапе) эти области и по маске определяй.
Если надо пиши свой компонент, с двумя св-вами picture, в первом лицевая, во второй маска, обработчик onclick переделывай.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)