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


Автор: IvanoffAndrey 8.7.2006, 10:18
В данный момент занимаюсь разработкой программы для визуализации графовых моделей. Долго не думая решил делать все по стандарту на Канве. В принципе рисую только кружочки и линии. Т.е. как бы необходимость в растре у меня отпадает но все равно делаю в нем. Так вот - получается не очень то красиво - растр в Delphi большим слишком мне кажется, квадритики всякие, особенно при рисовании кругов. Не предлагайте антиалиасинги - они все которые я видел очень долгие и туповатые - а программа работает в реальном времени. Возможно ли без последствий каким нибудь образом переделать все в веуторную форму. Может есть компонент для рисования векторной графики. Главное требование что бы был режим рисования pmNotXor - на нем все держится (правда с трудом). Может кто какие еще способы знает чтобы было красиво. 

Автор: DemoCode 8.7.2006, 10:59
Цитата(IvanoffAndrey @  8.7.2006,  11:18 Найти цитируемый пост)
Может кто какие еще способы знает чтобы было красиво. 

OpenGL 

Автор: IvanoffAndrey 8.7.2006, 12:41
примерно знаю что такое можно спросить конкретный пример:
необходимо в режиме pnNotXor начерчить на Image1.Canvas эллипс.
Мне этого будет достаточно что бы я зацепился за остальное.
 

Автор: Wing 8.7.2006, 14:17
Цитата(IvanoffAndrey @  8.7.2006,  10:18 Найти цитируемый пост)
Не предлагайте антиалиасинги - они все которые я видел очень долгие и туповатые - а программа работает в реальном времени.

Так ты наверное через Canvas.Pixels делал, тогда конечно. А как насчет отрисовки через Bitmap в памяти с использованием DIBBits и последующем выводом на экран? 

Автор: Alexeis 8.7.2006, 15:25
Эту задачу в свое время я уже решил и даже статью-описание своего компанента сделал
смотрите здесьhttp://alexei-s1.narod.ru/1.htm  

Автор: IvanoffAndrey 9.7.2006, 10:38
Цитата

Так ты наверное через Canvas.Pixels делал, тогда конечно. А как насчет отрисовки через Bitmap в памяти с использованием DIBBits и последующем выводом на экран?

Мда я конечно плохо с этим знаком если знаешь примерчик быстроко антиалиасинка кинь плиз.
Цитата

Эту задачу в свое время я уже решил и даже статью-описание своего компанента сделал
смотрите здесьhttp://alexei-s1.narod.ru/1.htm

Спасибо за сслыку.
Занятная программка, но только дело в том что все равно появляется эффект кубиков при рисовании линий. А мне это не нужно, иначе тогда вообще смысл работы пропадает. Вот посмотрите как в CorelDrow выводится линии - кубиками там и не пахнет. Как можно сделать так же. Должен же быть где нибудь такой алгоритм. Пробовал использовать библиотеку RG32 - все нравится кроме того, что нет режима pmNotXor или есть только как его поставить я не смог найти.  

Автор: Alexeis 9.7.2006, 11:05
IvanoffAndrey, можно использовать antialiasing

Добавлено @ 11:07 
заменить Все Line и ellipse на их аналоги у меня и библиотечка такая есть, правда с XOR, рисованием я сильно сомневаюсь - будет ли работать?  

Автор: IvanoffAndrey 9.7.2006, 11:26
Цитата

сомневаюсь - будет ли работать?

щас проверим.
Спасибо. 

Автор: Alexeis 9.7.2006, 11:37
Ну-ну там 2000 строк кода smile  

Автор: IvanoffAndrey 10.7.2006, 06:57
Цитата

Ну-ну там 2000 строк кода

Мда....
Разобрался я как установить редим pmNotXor : 
Использовать процедуру с последним параметром pmNotXor
......
var EZLine:TEZLine;
......

procedure TuruPuruClick(......);
begin
   EZLine.SetProp(LineColor:TColor,LineWidth:integer,
                            Transparency,startdistance,
                            antialiasing:boolean[U],cutoff,PenStyle,[U]PenMod)
end;
.......


antialiasing:boolean  - как понял из хелпа говорит - надо ли применять антиалиасинг, но вот незадача, если ставлю true, то линия просто в наглую не рисуется а компьютер издает странные звуки - типа видюху слышно (у меня такое бывает, не знаю почему, но при отображении сложной графики я слышу видюху?). А если не примеять антиалиасинг, то смысл использования этой библиотеки пропадает, все рисуется стандартными методами.
Может кто глянет и подскажет как все таки запустить линию с антиалиасингом. 

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