![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Движение компонента
DelphiLexx © (2005-10-21 14:44:00)У меня есть собственный компонент TConEquipment наследник от TGraphicControl, который может свободно перемещаться на форме. Проблема в следующем:
На форме есть два TConEquipment: ConEquipment1 и ConEquipment2. ConEquipment1 находится в состоянии покоя, а ConEquipment2 мы перемещаем по форме. Когда ConEquipment2 находит на ConEquipment1, то он должен прицепить ConEquipment1 и уже двигаться как единое целое.
Как это сделать?
Leonid Troyanovsky (2005-10-21 17:13:00) [1]
> DelphiLexx © (21.10.05 16:54) [15]
> Существует ли функция которая проверяла бы пересечение не
> со всем прямоугольником, а с конретной внутренней его областью.
Если "большую" фигуру можно задать регионом, то пересечение с
(маленьким) прямоугольником можно определить RectInRegion.
Возможно, что где-нибудь в DirectX или GDI+ есть и более того.
--
Regards, LVT.
DelphiLexx (2005-10-21 16:54:00) [2]
> IntersectRect
Существует ли функция которая проверяла бы пересечение не со всем прямоугольником, а с конретной внутренней его областью.
Leonid Troyanovsky (2005-10-21 15:57:00) [3]
> DelphiLexx © (21.10.05 15:34) [13]
> Для чего и как пользоваться IntersectRect.
msdn.microsoft.com
Search MSDN for: IntersectRect
Go.
--
Regards, LVT
DelphiLexx (2005-10-21 15:34:00) [4]
> IntersectRect
Для чего и как пользоваться IntersectRect.
Leonid Troyanovsky (2005-10-21 15:31:00) [5]
> DelphiLexx © (21.10.05 15:29) [11]
> А как правильно применить BoundsRect для того, чтобы проверить
> вошел ли в наш TConEquipment какой-либо контрол.
IntersectRect ?
--
Regards, LVT.
DelphiLexx (2005-10-21 15:29:00) [6]
> сначала мы применяем BoundsRect
А как правильно применить BoundsRect для того, чтобы проверить вошел ли в наш TConEquipment какой-либо контрол.
clickmaker (2005-10-21 15:25:00) [7]
> DelphiLexx © (21.10.05 15:21) [9]
нет, сначала мы применяем BoundsRect, а потом смотрим, не ли среди пересекшихся с нашим TConEquipment. Т.е. if (Control[i] is TConEquipment)
DelphiLexx (2005-10-21 15:21:00) [8]
> А ф1 жать пробовал?
Теперь попробовал вообщем с BoundsRect разобрались. И все же я не до конца понимаю.
Вот смотри:
ConEquipment1 стоит на месте ConEquipment2 двигается на его пути встречаются много других конролов, и как же мне узнать что вот именно этот контрол и есть TConEquipment. Вот когда я узнаю что ConEquipment2 находится на нужном мне контроле, тогда уж и будем применять BoundsRect.
clickmaker (2005-10-21 15:12:00) [9]
> DelphiLexx © (21.10.05 15:11) [7]
>
> > пересечение BoundsRect
>
> Вообще что такое BoundsRect?
А ф1 жать пробовал?
DelphiLexx (2005-10-21 15:11:00) [10]
> пересечение BoundsRect
Вообще что такое BoundsRect?
clickmaker (2005-10-21 15:10:00) [11]
> DelphiLexx © (21.10.05 15:08) [5]
это ты меня неправильно понял. Я тебе предлагаю проверять пересечение BoundsRect именно твоих ConEquipment, а не баттонов и мемо
DelphiLexx (2005-10-21 15:08:00) [12]
> пересечение прямоугольников. Математика
> У тебя есть BoundsRect обоих контролов. Вот и проверяй
Нет. Ты не совсем меня правильно понял. Я имел ввиду как узнать, что ConEquipment2 находится именно над ConEquipment1, а не над ТButton'ом или
TMemo
clickmaker (2005-10-21 15:05:00) [13]
> А как мне проверить что я зашел на область именно компонента
> TConEquipment
пересечение прямоугольников. Математика
У тебя есть BoundsRect обоих контролов. Вот и проверяй
DelphiLexx (2005-10-21 15:00:00) [14]
> сравнить координаты, если пересеклись, значит запустить
> 1
А как мне проверить что я зашел на область именно компонента TConEquipment.
DelphiLexx (2005-10-21 14:59:00) [15]
> У меня есть собственный компонент TConEquipment
Исходники можно взять здесь:
http://www.rsdn.ru:80/File/26841/FromLineTo.rar
clickmaker (2005-10-21 14:46:00) [16]сравнить координаты, если пересеклись, значит запустить 1