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