|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
помогите с графикой
в мою прогу надо добавить преобразование в 16цветный рисунок смещение Royd Steindberg как в XnView - подскажите как это сделать, если это возможно, и еще вопрос: если я преобразую через канвас или битмап(сканлайн) то это очень долго - каким образом работает XnView - ведь все преобразования на весь рисунок моментальны
|
#2
|
|||
|
|||
Вообще, если для очень быстроты, то надо переходить к WinAPI.
получаешь контекст, битмап, а дальше сам шуруешь по памяти на ассемблере. Тогда будет быстро. Сканлайн, естественно, достаточно медленная штука. Хотя, через него проще писать и для начала можешь реализовать через него, что бы отладить сам алгоритм. |
#3
|
|||
|
|||
сча попробую может что получиться, пример хоть какой нибудь был бы не лишним а то с графой через АПИ я еще не работал
|
#4
|
||||
|
||||
Что за эффект такой "смещение Royd Steindberg" может он по другому называется. Можно подробнее.
Цитата:
...сказал, и загрустил от бесспорной своей правоты |
#5
|
|||
|
|||
в XnView есть "преобразовать в цветное, нажимаешь, выбираешь в 16-цветный, там есть "смещение Royd Steindberg", что такое контекст и как к нему обращаться подскажите)
|
#6
|
||||
|
||||
Если делать, то только на сканлайнах, перейдя на winapi тикакого выйграша ты не получишь.
Самое главное это быстрые алгоритмы. Вот тут очень быстрая функция для подсчета цветов, можешь для начала переделать ее, что бы получить минимальную палитру и число каждого из цветов. Потом идеи еще появятся, я думаю. А вообще, лучше поискать готовые библиотеки, если порыться в той же XnView, думаю можно найти нужные dll и экспортировать их них функции. ...сказал, и загрустил от бесспорной своей правоты |
#7
|
|||
|
|||
алгоритмы писать я мостак, только если сканлайн это самый быстрый способ то почему мой алгоритм работает 1 мин а в икснвьюв он проходит за 5 сек) может фильтры и преобразования в икснвьюв используют какие то технологии типо директикс или делфиикс или еще что.
|
#8
|
||||
|
||||
Цитата:
Цитата:
Цитата:
В Windows есть механизмы для работы с палитрой, но того что ты хочешь они не делают, все придется писать руками, или искать готовое решение. ...сказал, и загрустил от бесспорной своей правоты |
#9
|
|||
|
|||
>>Сообщение от hackroute
>>алгоритмы писать я мостак >> >>Цитата:Сообщение от hackroute >>мой алгоритм работает 1 мин а в икснвьюв он проходит за 5 сек) >Первое противоречит второму =) не противоречит по одной простой причине - алгоритм и реализация алгоритма есть разные "вещчи" - а на счет того что "ничего кроме проца не использует" - за это спасибо, будем знать куда копать - будем переходить на работу с памятью и вложения ассемблера, раз других способов нет var ds: tdibsection; p: pointer; GetObject(image2.Picture.Bitmap.Handle, SizeOf(DS), @DS); p := pointer(ds.dsBm.bmBits); - указатель на начало растра, получилось быстрее чем сканлайн(и темболее канвас.пиксельс) - теперь алгоритм работает 5 сек - всем спасиб Последний раз редактировалось hackroute, 02.11.2009 в 11:24. |