![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли создать объект... [D6]
Shopot © (2005-11-09 21:30:00)Здравствуйте. Можно ли создать такой визуальный объект, чтобы он представлялсобой кольцо, некоторой толщины, и отрисовывался на форме. Но при клике мыши по самому кольцу, выполнялся бы метод OnMouseClick объекта, а при клике во внутренней его области, OnMouseClick формы? Как примерно можно это сделать и какой класс взять родителем?
Zeqfreed (2005-11-09 23:15:00) [1]vvvaaa (09.11.05 22:32) [7]
Щас пойдут просьбы примеров. Справка давно ведь уже не рулит.
vvvaaa (2005-11-09 22:32:00) [2]Основные функции для создания не прямоугольных контролов:
CreateRectRgn, CreateEllipticRgn и т.д см. хелп
CombineRgn
SetWindowRgn
Можешь хоть весь контрол дырками изтыкать. А рисовать кольца можно на любом контроле, главное чтоб Canvas был.
злобная танька (2005-11-09 22:23:00) [3]а можно вопрос нафига вообще эти кольца нужны?
может есть другое решение? :)
Shopot (2005-11-09 22:03:00) [4]А если 2 объекта перекрываются или одно кольцо находится поверх или внутри другого. Как определить метод того объекта, над которым произошел click? Ведь имаджи квадратные, и который создан позже будет всегда поверх того, который появился раньше.
злобная танька (2005-11-09 21:56:00) [5]ишо можно расстояние от центра дырки считать и сравнивать с ее радиусом
злобная танька (2005-11-09 21:53:00) [6]нафига перебором?
можно цвет например проверять в том же имедже
if image1.canvas.pixels[X, Y] = yourtransparentcolor then Form1Click
не думаю что ето будет работать слишком медленно.
а насчет контрола я не знаю.. там из winapi функция какая то была которая окно делала произвольной формы.. не знаю можно ли с дырками.. наверно можно. поищи на тему "окно непрямоугольной формы" но имхо вариант с имеджем в 1000 раз проще и лучше.
Shopot (2005-11-09 21:47:00) [7]А как отследить эту область? Перебором? Долго, таких объектов если много и быстро по ним щелкать, все тормозить будет. И потом события должны вызываться автоматом, а не где то в процедуре определения границ области кольца, повешенной на OnMouseClick imag'а.
злобная танька (2005-11-09 21:35:00) [8]а шо мешает нарисовать кольцо на имейдже с прозрачным фоном и вызывать Form1Click при нажатии во внутренней области?