![]() |
Быстрое отображение битового образа
Есть поток. Из него я декодирую картинки. картинки получаются в таком виде: RGB RGB RGB, т.е. на каждый цвет по 1 байту - 3 байта на пиксел, на картинку - 320*240*3 байта. Все байты лежат в массиве 320*240*3 заподряд. Есть еще на форме компонент picture.
А вопрос такой: как эффективнее всего перенести битовый образ (мой массив, в котором лежат триплеты байтов) на компонент picture, т.е. попросту мой образ нужно отобразить на форму, если можно без компонента picture - еще лучше, т.е. отображать прямо на свободном месте формы мою картинку. Наилучший способ для меня - просто получить указатель на область памяти и скопировать мой массив туда и чтоб после такого копирования картинка появилась на экране в нужном мне месте формы |
lokiSE
Под виндой? Если да, то надо копать в сторону DirectDraw. Этот API позволяет с максимальной скоростью отображать любые картинки в любую область экрана. |
Цитата:
|
ИМХО, если исходить из VCL Delphi, то на простом канвасе формы рисовать напрямую можно только через Pixels, однако у TImage уже реализован класс Bitmap с методами загрузки/записи из потока/в поток, и есть ScanLine,в который достаточно быстро можно выгрузить из потока триплеты, только нужно установить формат пикселя и цветовой режим, для триплетов 24 бита и без цветовой палитры... только следует учитывать выравнивания по байту и нужно знать ширину и высоту картинки в пикселях.
|
Цитата:
В дельфях это будет выглядеть наверно Form1.DoubleBuffered = True После этого ты спокойно можешь реализовать копирование на TCanvas. |
| Часовой пояс GMT +4, время: 02:21. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.