Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизБыстрый вывод графики на канву Найти похожие ветки
← →
Пробегалец (2010-05-04 11:33) [0]Доброе время суток.
Храню графику в двухмерном массиве (попиксельно. Этакий аналог битовой карты). Необходимо организовать быстрый вывод этой самой графики на канву.
Canvas.pixels[] - долго.
bitmap.scanline - дорого по памяти.
Единственная мысля организовать прорисовку через хендл канвы, как это делает gdi32. Но как это сделать не очень представляю.
Да и привязку отрисовки нельзя цеплять на чистый winapi, так как в будущем планируется портирование кода под freepascal.
Будут какие предложения?
← →
Andy BitOff © (2010-05-04 11:43) [1]
> Будут какие предложения?
Не заниматься ерундой.
Хранить графику, как хранят графику.
← →
Anatoly Podgoretsky © (2010-05-04 11:48) [2]> Andy BitOff (04.05.2010 11:43:01) [1]
Как все не интересно.
← →
brother © (2010-05-04 11:54) [3]перегоняй в bitmap формат и рисуй...
← →
Пробегалец (2010-05-04 11:55) [4]
> Anatoly Podgoretsky © (04.05.10 11:48) [2]
> > Andy BitOff (04.05.2010 11:43:01)
> [1]Как все не интересно.
>
Действительно не интересно. Пробую силы в создание собственной граф. библиотечки. А писать очередной ретранслятор gdi нет хочу.
← →
Пробегалец (2010-05-04 11:56) [5]
> перегоняй в bitmap формат и рисуй...
Дублировать с буфером-массивом? а если большой объем данных и нужно быстро выводить?
← →
brother © (2010-05-04 11:57) [6]> Пробую силы в создание собственной граф. библиотечки.
> Будут какие предложения?
а нам велосипедов не нать!
> А писать очередной ретранслятор gdi нет хочу.
?
> bitmap.scanline - дорого по памяти.
обоснование?
← →
Пробегалец (2010-05-04 12:29) [7]
> > Пробую силы в создание собственной граф. библиотечки.
> > Будут какие предложения?а нам велосипедов не нать!
Мне нать ;)
> > А писать очередной ретранслятор gdi нет хочу.
> ?
Хочу повозиться с алгоритмами Брезенхема и иже с ними
> > bitmap.scanline - дорого по памяти.
обоснование?
Ну щитаем, большой двумерный массив допустим с четырехбайтовой ячейкой и чисто для отрисовки создавать аналогичный по размеру битмап, копировать в цикле туда все данные.... а если картинка в массиве меняется динамично? и тд и тп. Считаю нецелесообразно
← →
brother © (2010-05-04 12:42) [8]> Считаю нецелесообразно
тогда - это твой велосипед? тебе его и делать ;)
← →
Алексей 123 (2010-05-04 12:49) [9]StretchDIBits юзай.
Немножко другое, но поможет:
http://delphi.about.com/library/bluc/text/uc052501e.htm
← →
Алексей 123 (2010-05-04 12:53) [10]Сейчас вчитался.
> мысля организовать прорисовку через хендл канвы
> привязку отрисовки нельзя цеплять на чистый winapi
ты уж определись
← →
Anatoly Podgoretsky © (2010-05-04 13:07) [11]
> Хочу повозиться с алгоритмами Брезенхема и иже с ними
алгоритмs Брезенхема не применимы для попиксельного вывода графики.
← →
Пробегалец (2010-05-04 13:10) [12]
> > мысля организовать прорисовку через хендл канвы
дополняю: так как это делает winapi.
Я немного ковырял исходники gdi32 от reactos и там к хендлу присваивается какаета структура, но пока я не понял что там к чему. Мало того что, там куча перекресных ссылок в разные модули, так и еще на С++. А я с ним не очень
← →
Пробегалец (2010-05-04 13:11) [13]
> алгоритмs Брезенхема не применимы для попиксельного вывода
> графики.
Поясните если не сложно
← →
Anatoly Podgoretsky © (2010-05-04 13:31) [14]> Пробегалец (04.05.2010 13:11:13) [13]
Просто не применимы.
← →
Б (2010-05-04 17:34) [15]
> Пробегалец (04.05.10 13:10) [12]
> дополняю: так как это делает winapi.
А TBitmap не на WinAPI держится?
Взгляни его исходы и убедишься...
> так как в будущем планируется портирование кода под freepascal.
Под какие платформы? NIX/MAC?
Юзать API нужной платформы всё же придёться.
> Храню графику в двухмерном массиве
Можно выводить как DIB функцией SetDIBitsToDevice прямо на DC.
Он же канва.
← →
antonn © (2010-05-04 22:19) [16]
> Дублировать с буфером-массивом? а если большой объем данных
> и нужно быстро выводить?
Перегонять в tbitmap и выводить.
А все трудноусваяемые операции выполнять в таких вот "массивах", при непоследовательном доступе (да даже и при последовательном) скорость будет всяко выше сканлайна. Минус - гемор с выводом.
Либо тупо указателем на данным битмапа, тоже вполне быстро будет, геморр будет с форматом битмапа и немножко с перевернутыми строками.
← →
Пробегалец (2010-05-05 16:26) [17]
> Перегонять в tbitmap и выводить.А все трудноусваяемые операции
> выполнять в таких вот "массивах", при непоследовательном
> доступе (да даже и при последовательном) скорость будет
> всяко выше сканлайна. Минус - гемор с выводом.
Да похоже так и придется делать. Вроде не так медленно, как могло бы. И по памяти вроде ничо.
> Под какие платформы? NIX/MAC?
возможно и то, и то. Нужно будет там пощупать, как битмап пашет
← →
Пробегалец (2010-05-05 16:28) [18]
> Anatoly Podgoretsky © (04.05.10 13:31) [14]
> > Пробегалец (04.05.2010 13:11:13) [13]Просто не применимы.
>
А для растеризации кривых пойдет? :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.081 c