![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
куда щелкнул юзер? [D5, D7]
Centr © (2004-11-18 08:53:00)Доброго всем!
есть Image в него загружена картинка с цветными облястями и черными границами, в качестве примера:
image1.Canvas.Brush.Color:=clRed;
image1.Canvas.Ellipse(rect(10,10,50,50));
image1.Canvas.Brush.Color:=clGreen;
image1.Canvas.Rectangle(rect(10,70,50,110));
надо узнать щелкнул ли юзверь по элипсу или квадрату, к цвету привязку делать не стоит т.к. он может меняется.
Реально области намного сложнее.
Заранее всем спасибо
Centr (2004-11-29 11:33:00) [1]
> Разве ты их не сам задаешь при построении региона?
извини :(
но я действительно их не сам задаю,
я нашел функцию которая анализирует ч/б картинку и по ней создает регион.
я этот регион записываю в файл, а потом этот файл записываю опять в регион когда надо и отрисовываю.
Проблема в том, что рисуется он точно таким же (по размерам и местоположению) каким был когда его сохраняли.
Анонимщик (2004-11-26 15:04:00) [2]Ты меня прямо разочаровываешь. До каких еще координат? Разве ты их не сам задаешь при построении региона?
Centr (2004-11-26 11:47:00) [3]все это понятно, как добраться до этих самых координат
Анонимщик (2004-11-23 11:38:00) [4]Пусть координаты вершин: (Xi, Yi), i=1,N - N вершин короче говоря. Тогда координаты вершин уменьшенного многоугольника:
X'i = Alpha*(Xi-Xc) + Xc; Y'i = Alpha*(Yi-Yc) + Yc;
Xc, Yc - центр масс многоугольника. Поскольку ник у тебя соответствующий, то вычисли его сам.
Alpha может принимать любые действительные значения.
Centr (2004-11-23 09:47:00) [5]
> сделать преобразование координат для тебя
про вывод все просто есть ф-ция PaintRgn, про попадание тоже есть ф-ция PtInRegion, но проблема в том что регион рисуется точно такой же и точно там же откуда он был определен (я его определил программно из картинки и записал в файл), мне теперь надо его уменьшить и нарисовать в другом месте.
Вот этого я НЕ МОГУ. Не дорос еще, а нужно просто позарез.
Есть ф-ция GetRgnBox, которая возвращает Rect региона, но нет ф-ции SetRgnBox :((
Анонимщик (2004-11-22 10:46:00) [6]Тю.
Раз ты уже и с попаданием разобрался, то сделать преобразование координат для тебя - пустяк.
Centr (2004-11-22 05:57:00) [7]про то как создать регион и определить точку попала или нет разобрался.
надо уменьшить этот регион, и нарисовать его в заданных координатах
Анонимщик (2004-11-19 15:22:00) [8]Так тебе еще и контуры выделить нужно? А потом определить, входит ли данная точка внутрь области, ограниченной контуром? И что за масштабирование и установка?
Centr (2004-11-19 03:34:00) [9]нашел хорошую статью про регионы
http://www.realcoding.net/article409.html,
также нашел код который из черно-белого битмапа делает регион,
но никак не могу найти функции для масштабирования и установки региона в нужную позицию
[lamer]Barmaglot (2004-11-18 11:20:00) [10]Нет, у меня с английским нормально, так что других ссылок у меня нет...Просто берешь название ф-ции и ищещь в инете... Долго, но если приспичело...
P.S. Кстати программист без знания английского - это нонсенс...
Centr (2004-11-18 11:12:00) [11]
> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/regions_6o6r.asp
>
> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdicpp/GDIPlus/GDIPlusreference/flatregion.asp
а может че нить на русском есть
ну плохо у меня с англицким :(
[lamer]Barmaglot (2004-11-18 09:50:00) [12]RTFM?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/regions_6o6r.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdicpp/GDIPlus/GDIPlusreference/flatregion.asp
Centr (2004-11-18 09:45:00) [13]
> PtInRegion?
а как этот регион задать,
желательно чтоб программно
[lamer]Barmaglot (2004-11-18 09:38:00) [14]PtInRegion?