Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Создание ВЕКТОРНОГО редактора.


Автор: as555 17.5.2006, 11:49
Необходимо сделать Векторный редактор чтоб он мог:
 Например 
 - нарисовать прямоугольник 
 - переместить его
 - изменить его размеры.

Если у кого-то есть какие-то  мысли или примеры, буду очень благодарен 

Автор: drkot 17.5.2006, 12:22
Думаю надо создать ряд объектов типа: элипс, прямоугольник, замкнутая область, линия, ломаная линия, сглаженая ломаная и тд.
Само изображение хранить в виде коллекции выше перечисленых объектов.
Причем обекты не стоит делать наследниками TWinControl (и даже TComponent), в идеале об TObject.

TObject -
               TVectorElement -
                                          TLine
                                          TElipse
                                          ...


Можно пойти другим путем и взять за основу метафайлы и их векторный движок. 

Автор: Mechanic 18.5.2006, 02:54
Вот есть пример, как можно описать 2D фигуры, чтоб манипулировать ими. Только к ним нужно ещё мышиные события для полноты прикрутить, да научить их в файл сохраняться / возвращаться потом оттуда в память.. Коллекции тоже понадобятся (та же группировка), да много всего можно навернуть.. Тот же простейший Corel Draw посмотреть можно для идей..  smile 
 

Автор: as555 18.5.2006, 10:43
Большое спасибо
есть еще один вопросик 
если к объекту привязать текс допустим с помощью  TCanvas.TextOut
то встает вопрос насчет масштаба т.е. сам объект отмаштабировать можно т.к. он векторный
т..е умножить длину на коэфф. а вот, что делать с  текстом ? 

Автор: rounin 18.5.2006, 12:26
Еще один примерчик. 
На счет текста - можно сделать что-нибудь типа 

Font.Height := Round(Font.Height*K) 

Автор: ДЫМ 19.5.2006, 06:35
Используй GDI+, там размер текста можнет быть дробным, т. е. размер = коэффициент * исходный размер. 

Автор: Leos 20.5.2006, 21:24
GDI+ надо использовать однозначно, так как там очень много возможностей по работе с графикой, например есть antialiasing. И вообще GDI+ объектно-ориентированный. 

Потребность в использовании antialiasing'а встанет на 99.99%. Так, что сразу надо начинать его юзать.  TCanvas.TextOut не отделаешься, так как его возможности сильно ограничены, им даже нельзя выводить юникод.

И ещё: если привязывать текст, то типа WideString - юникод. 

Автор: Snowy 25.5.2006, 10:08
http://www.codeaccelerate.com/drawing_engine.html
OpenSource графическая библиотека для создания мощных векторных редакторов. 

Автор: as555 30.5.2006, 16:03
всем пасибо 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)