Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.9.168] |
|
Сообщ.
#1
,
|
|
|
Всем привет и с Новым годом. Вообщем вопрос таков:
Допустим есть class TObject { TList<Point>Points; //Координаты центра фигуры int mx,my; } Объект который состоит из вершин. Подскажите пожалуйста примерно оптимальный способ определения что при MouseDown(x,y) на области рисования я выберу эту фигуру. Спасибо. |
Сообщ.
#2
,
|
|
|
Важны не только вершины, но и ребра.
|
Сообщ.
#3
,
|
|
|
Вот области которые принимает CprelDraw за выделение объекта, составленный из Безье
|
Сообщ.
#4
,
|
|
|
Цитата dufifa @ Допустим, в векторной графике объекты могут бытьДопустим есть - точечные; - векторные (объекты из двух точек); - линейные (замкнутые и незамкнутые, незамкнутые составные); - площадные (с дырками и без дырок, многоконтурные (опять же с дырками и без них)); - подписи (всякие...). Проще всего ловить площадные объекты - точка внутри полигона или нет. Определяется количеством пересечений вектора от этой точки до точки ВНЕ рамки исследуемого полигона с векторами, образующими этот полигон (и его дырки). Если количество пересечений НЕчётное, то точка в полигоне. Для остальных надо брать некоторую область поиска (условно +- 2 пиксела около точки жмаканья мышой) и проверять либо попадание точки (вершины) в этот ректангл, либо пересечение векторов объекта со сторонами этого ректангла. |
Сообщ.
#5
,
|
|
|
В TObject ввел абстрактную процедуру Selectit которая будет разная для всех фигур. Пока хорошо получилось только для линии и прямоугольника.
|