![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по векторному редактору
niva © (2003-11-15 09:40:00)Пишется векторный редактор. Создаются векторные примитивы такие как линия, прямоугольник, эллипс, дуга. Нужно реализовать поворот для них. Для линии и прямоугольника вроде все просто. Поворачиваем каждую точку и выводим линию тем же методом что и неповернутую то есть LineTo и MoveTo, а прямоугольник методом Polygon. А вот как быть с дугой и эллипсом? Ведь если рисовать их когда они не повернуты то все просто делается методами канвы Arc и Ellipse. После поворота это не пройдет. Под NT есть функция SetWorldTransform но программу нужно будет использовать и под 95-ыми. Может кто сталкивался с подобным? Спасибо.
Fenik (2003-11-22 16:08:00) [1]По координатам. Зная координаты начала и конца линии, можно узнать принадлежит ли точка клика этой линие или нет. Все просто.
dgr (2003-11-22 13:41:00) [2]А как сделать ту же Line? чтобы ее можно было выделить мышкой на экране? Т.е., чтобы мой визуальный объект TmyLine отловил событие OnClick
LastLamer (2003-11-16 04:15:00) [3]У меня похожие трудности были :Р Здесь все зависит от того как представлены примитивы - по контрольным точкам либо коэффициентами уравнений. Вообще если поворот будет только относительно центра объекта, то проблем особых нет, а если относительно любой - после поворота координаты контрольных точек примитива должны пересчитываются. Дугу окружности можно хранмть по 3-м точкам, кривую безъе по 4-м (как минимум), а при выводе пересчитывать для передачи в функции канвы.
MBo (2003-11-15 13:40:00) [4]эллипсы и дуги рисуются в недрах Windows как кривые Безье - эллипс - 4 таких кривых, дуги - в зависимости от углового размера. Поэтому можно самому аппроксимировать дуги и эллипсы кривыми Безье, и проводить аффинное преобразование поворота над их контрольными точками.