Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.28;
Скачать: CL | DM;

Вниз

Вопрос по векторному редактору   Найти похожие ветки 

 
niva   (2003-11-15 09:40) [0]

Пишется векторный редактор. Создаются векторные примитивы такие как линия, прямоугольник, эллипс, дуга. Нужно реализовать поворот для них. Для линии и прямоугольника вроде все просто. Поворачиваем каждую точку и выводим линию тем же методом что и неповернутую то есть LineTo и MoveTo, а прямоугольник методом Polygon. А вот как быть с дугой и эллипсом? Ведь если рисовать их когда они не повернуты то все просто делается методами канвы Arc и Ellipse. После поворота это не пройдет. Под NT есть функция SetWorldTransform но программу нужно будет использовать и под 95-ыми. Может кто сталкивался с подобным? Спасибо.


 
MBo ©   (2003-11-15 13:40) [1]

эллипсы и дуги рисуются в недрах Windows как кривые Безье - эллипс - 4 таких кривых, дуги - в зависимости от углового размера. Поэтому можно самому аппроксимировать дуги и эллипсы кривыми Безье, и проводить аффинное преобразование поворота над их контрольными точками.


 
LastLamer ©   (2003-11-16 04:15) [2]

У меня похожие трудности были :Р Здесь все зависит от того как представлены примитивы - по контрольным точкам либо коэффициентами уравнений. Вообще если поворот будет только относительно центра объекта, то проблем особых нет, а если относительно любой - после поворота координаты контрольных точек примитива должны пересчитываются. Дугу окружности можно хранмть по 3-м точкам, кривую безъе по 4-м (как минимум), а при выводе пересчитывать для передачи в функции канвы.


 
dgr   (2003-11-22 13:41) [3]

А как сделать ту же Line? чтобы ее можно было выделить мышкой на экране? Т.е., чтобы мой визуальный объект TmyLine отловил событие OnClick


 
Fenik ©   (2003-11-22 16:08) [4]

По координатам. Зная координаты начала и конца линии, можно узнать принадлежит ли точка клика этой линие или нет. Все просто.



Страницы: 1 вся ветка

Текущий архив: 2004.03.28;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.023 c
1-1078575731
Yuri Btr
2004-03-06 15:22
2004.03.28
определить нажатие на checkbox в ListView


14-1074855258
TALLA
2004-01-23 13:54
2004.03.28
Связывание обработчика и события TcpClient.OnReceive в DLL.


8-1068992832
наблюдатель
2003-11-16 17:27
2004.03.28
CubeMap Image в GLScene


14-1078085685
Zacho
2004-02-29 23:14
2004.03.28
FIDO-gate


9-1046688009
ogo
2003-03-03 13:40
2004.03.28
Стекло