Здравствуйте, McSeem2, Вы писали:
MS>http://www.creativedocs.net/devs/agg
MS>Штука довольно специфическая, разработана была для своих прикладных нужд. Документации нет. Тем не менее, может быть, кому-то и пригодится.
Можешь пару слов сказать о скорости отрисовки по сравнению с GDI+? Стоит ли пробовать портировать приложение которое оперирует с изображениями размерами порядка 5000х5000 с альфа каналами?
Здравствуйте, HotDog, Вы писали:
HD>Здравствуйте, McSeem2, Вы писали:
MS>>http://www.creativedocs.net/devs/agg
MS>>Штука довольно специфическая, разработана была для своих прикладных нужд. Документации нет. Тем не менее, может быть, кому-то и пригодится.
HD>Можешь пару слов сказать о скорости отрисовки по сравнению с GDI+? Стоит ли пробовать портировать приложение которое оперирует с изображениями размерами порядка 5000х5000 с альфа каналами?
Я делал враппер antigrain для Delphi.
Правда я сам не тестировал.
Но заказчик был в восторге, говорил что на его задачах скорость отрисовки увеличилась в 10 раз (по сравнению с GDI+) и качество отрисовки получше стало.
Правда как я понял, он альфа каналы не очень использовал, в основном куча полигонов (что-то с железными дорогами связано)
Здравствуйте, HotDog, Вы писали:
HD>Можешь пару слов сказать о скорости отрисовки по сравнению с GDI+? Стоит ли пробовать портировать приложение которое оперирует с изображениями размерами порядка 5000х5000 с альфа каналами?
В основном быстрее, но не в 10 раз. Да, есть некоторые трюки, работаюшие очень быстро, типа рисования паттерна вдоль линии. Но в GDI+ такого вообще нету, поэтому сравнение несколько некорректно. Кое-что, например, трансформация изображений — даже медленнее.
А вообще-то, можно составить некое представление по Creative Docs.NET: http://www.creativedocs.net/downloads/files/
Там все, ровно 100% всей графики (включая меню) рисуется с помощью их тулкита.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Здравствуйте, korzhik, Вы писали:
K>Здравствуйте, HotDog, Вы писали: HD>>Можешь пару слов сказать о скорости отрисовки по сравнению с GDI+? Стоит ли пробовать портировать приложение которое оперирует с изображениями размерами порядка 5000х5000 с альфа каналами? K>Но заказчик был в восторге,
ага (заказчик типа я ) . Если кому интересно , могу поделиться получившеся оберткой для Delphi (правда сейчас она
стремительно затачивается под мою задачу) K>говорил что на его задачах скорость отрисовки увеличилась в 10 раз (по сравнению с GDI+) и качество отрисовки получше стало. K>Правда как я понял, он альфа каналы не очень использовал, в основном куча полигонов (что-то с железными дорогами связано)
Да , в у меня в приложении есть хитрый график , там нужно выводить 250-300 сглаженных линий толщиной 2px . GDI + рисует их
за ~300 ms — при такой скорости прокрутка превражается в слайд-шоу . C Agg у меня получилось 30 ms .
Получившийся резерв по скорости позволил добавить всяких красивых наворотов
В конце января буду другую задачу переносить с GDI+ (типа мини-GIS), там тоже померяю скорость.
А вообще Creative Docs.NET очень показательный проект в плане возможностей и скорости . Именно он убедил меня что переход
на Agg дело стоящее.
Максим!
Сорри за off topic , но можно вопрос :
Мне понадобилось нарисовать (с Agg) что-то вроде balloon tooltip с тенью. Сам path нужной формы сделать не проблема ,
но вот как лучше реализовать тень ?
пока придумал обвести path линиями с уменьшающейся альфой.
Можно ли из path получить линии (если использовать conv_contour то я получу обводку со всех строн,а нужно сверху\сбоку )?
Здравствуйте, retalik, Вы писали: R>[offtopic] R>Ой, да это же авторы COLOBOT! Более необычной и интересной игрушки "для детей программистов" я еще не встречал. Молодцы шведы. R>[/offtopic]
угу, молодцы, только эти шведы из Швейцарии.
Здравствуйте, Denis_TST, Вы писали:
D_T>Мне понадобилось нарисовать (с Agg) что-то вроде balloon tooltip с тенью. Сам path нужной формы сделать не проблема , D_T>но вот как лучше реализовать тень ?
Обычно делают Gaussian Blur, что есть сравнительно дорогая операция, к тому же, в AGG не реализована. Другой способ, который используют Daniel и Pierre — это чисто векторный, conv_contour. Но он тоже дорогой, возможно даже медленнее, чем blur.
D_T>пока придумал обвести path линиями с уменьшающейся альфой. D_T>Можно ли из path получить линии (если использовать conv_contour то я получу обводку со всех строн,а нужно сверху\сбоку )?
Ну так у conv_contour есть свойство "width". Если эта величина положительна, то контур — снаружи, если отрицательна — то внутри (или наоборот, в зависимости от фактического направления обхода). При width=0 надо получить alpha=0.5. Чем "наружней", тем прозрачней — это и есть эмуляция gaussian blur. Ну и плюс смещение вправо-вниз.
Может есть у кого желание попробовать имплементировать, чтобы чисто поиграться? Можно безотносительно к каким-либо AGG-ам, просто на коленке. Если метод действительно стоящий (кажется, что это так), и если получится что-то интересное и быстрое, то можно будет подумать, как разрулить патентные вопросы.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Здравствуйте, McSeem2, Вы писали: D_T>>Мне понадобилось нарисовать (с Agg) что-то вроде balloon tooltip с тенью. Сам path нужной формы сделать не проблема , D_T>>но вот как лучше реализовать тень ? MS>Обычно делают Gaussian Blur, что есть сравнительно дорогая операция, к тому же, в AGG не реализована. MS>Другой способ, который используют Daniel и Pierre — это чисто векторный, conv_contour. Но он тоже дорогой, возможно даже медленнее, чем blur.
Ага, в последней версии Creative Docs у заливки и линий появился Blur — правда на тень это не похоже , скорее на красивый эффект.
я все гадал используется ли там conv_contour или нет
D_T>>пока придумал обвести path линиями с уменьшающейся альфой. D_T>>Можно ли из path получить линии (если использовать conv_contour то я получу обводку со всех строн,а нужно сверху\сбоку )?
MS>Ну так у conv_contour есть свойство "width". Если эта величина положительна, то контур — снаружи, если отрицательна — то внутри (или наоборот, в зависимости от фактического направления обхода). При width=0 надо получить alpha=0.5. Чем "наружней", тем прозрачней — это и есть эмуляция gaussian blur. Ну и плюс смещение вправо-вниз.
Павел (korzhik) предложил еще один интересный вариант — использовть linePattern с битмапом в виде тени (с градиентом по альфе).
для маленьких теней, думаю это лучший способ.
Здравствуйте, Denis_TST, Вы писали:
D_T>Павел (korzhik) предложил еще один интересный вариант — использовть linePattern с битмапом в виде тени (с градиентом по альфе). D_T>для маленьких теней, думаю это лучший способ.
Здравствуйте, Denis_TST, Вы писали:
D_T> ага (заказчик типа я ) . Если кому интересно , могу поделиться получившеся оберткой для Delphi (правда сейчас она D_T> стремительно затачивается под мою задачу)
Очень интересно. Поделись, если можно. В своё время собирался писать сам, но руки так и не дошли
...<< RSDN@Home 1.2.0 alpha rev. 621>>
...Foobar {Nightwish — [Over The Hills And Far Away #09] Wishmaster (live) [foobar200
Здравствуйте, alive, Вы писали:
A>Здравствуйте, Denis_TST, Вы писали:
D_T>> ага (заказчик типа я ) . Если кому интересно , могу поделиться получившеся оберткой для Delphi (правда сейчас она D_T>> стремительно затачивается под мою задачу)
A>Очень интересно. Поделись, если можно. В своё время собирался писать сам, но руки так и не дошли
ок, на след неделе пойду на работу , причешу исходники и выложу. Кстати, удобно работать в новой Delphi 2006 —
там Delphi и С++ Builder в одной IDE , можно завести общий Project Group и отлаживаться в обоих проектах.
Здравствуйте, Denis_TST, Вы писали:
D_T>ок, на след неделе пойду на работу , причешу исходники и выложу. Кстати, удобно работать в новой Delphi 2006 - D_T>там Delphi и С++ Builder в одной IDE , можно завести общий Project Group и отлаживаться в обоих проектах.