Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Быстрое отображение битового образа, Быстрое отображение битового образа 
:(
    Опции темы
lokiSE
Дата 20.12.2004, 08:27 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Есть поток. Из него я декодирую картинки. картинки получаются в таком виде: RGB RGB RGB, т.е. на каждый цвет по 1 байту - 3 байта на пиксел, на картинку - 320*240*3 байта. Все байты лежат в массиве 320*240*3 заподряд. А вопрос такой: как эффективнее всего перенести битовый образ (мой массив, в котором лежат триплеты байтов) на на форму, т.е. отображать прямо на свободном месте формы мою картинку. Наилучший способ для меня - просто получить указатель на область памяти и скопировать мой массив туда и чтоб после такого копирования картинка появилась на экране в нужном мне месте формы. Реализация через SetPixel - слишком медленная. Если можно, пожалуйста с примерами кода. smile, а то никто что то посоветовать не может, а очень надо. smile
  Вверх
Mad
Дата 20.12.2004, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

Репутация: 2
Всего: 19



lokiSE
Воспользуйся поиском, подобный вопрос уже поднимался.

В кратце, тебе просто нужно твой массив загнать в HBITMAP или в CBitmap.



--------------------
user posted image
PM MAIL   Вверх
Coocky
Дата 20.12.2004, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



Цитата
получить указатель на область памяти и скопировать мой массив туда

Я был делал так же-контекст памяти-насколько мне известно-наиболее быстрый smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
DENNN
Дата 21.12.2004, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: нет
Всего: 43



Создаешь DIB секцию, описываешь в что у тебя будет изображение, где пикселы кодируются как RGB, затем вызываешь
::CreaeteDIBSection(.....), она помимо HBITMAP возвращает тебе указатель на область памяти, куда будешь записывать свои байты.
Для отображения на форме можно использовать BitBlt
Это как один из вариантов, второй - получить HDC формы, на которой ты хочешь рисовать, затем выбрать на ней свой HBITMAP, в который из своей проги пытаться писать напрямую (пропустит ли XP такой трюк - х.з.)

ИСпользование функций GDI для отображения видео - задача не для слабонервных. Скорость у стандартного GDI отвратительная, а на неклассических настройках экрана иногда бывают глюки именно с битмапами. Кроме того, у первого варианта есть еще один недостаток: в MSDN настоятельно рекомендуют для таких операций как bitblt использовать контекстно зависимые битмапы, чтоб не приходилось выполнять пересчет цвета в формат контекста.

PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0524 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.