Доступ к растровому изображению должен быть синхронизирован. Сделайте это, вызвав функцию GdiFlush.

й вечер,

У меня есть несколько 32-битных изображений в буферах памяти, которые я хочу быстро «перетянуть» в контекст устройства. Скорость - проблема здесь, потому что буфер будет постоянно манипулировать и должен быть повторно подключен к DC.

Глубина цвета буфера составляет 32 бита, поэтому он уже находится в ожидаемом DIB формате SetDIBits (). Однако это довольно громоздко, поскольку цель битовой карты SetDIBits () уже не может быть выбрана в DC до операции. Поэтому мне нужно будет постоянно поменять битовую карту контроллера домена, вызвать SetDIBits (), вернуть битовую карту обратно в контроллер домена, а затем подключить контроллер домена к контроллеру окна. На мой взгляд, это просто большая нагрузка на ЦП и слишком большая разветвленность в Windows API; слишком много для оптимальной производительности.

Мне было бы интересно использовать DirectX, если бы он не заставлял меня использовать контексты устройств для 2D-операций, или загружать текстуры в видеопамять перед их отображением, потому что содержимое изображения постоянно меняется.

Мой вопрос прост (несмотря на длительную рецензию). Каков был бы самый быстрый способ для меня переместить изображение из буфера пикселей в памяти на экран? Прямой доступ к пиксельному буферу контроллера домена был бы отличным, но я знаю, что этого не произойдет.

Спасибо за чтение моей длинной рецензии.

Ответы на вопрос(1)

Решение Вопроса

CreateDIBSection создать DIB, в который приложения могут писать напрямую. Это позволяет постоянно обновлять растровое изображение (либо записывать в память, либо непосредственно записывать в него).

См. Статью MSDN для получения дополнительной информации.

Доступ к растровому изображению должен быть синхронизирован. Сделайте это, вызвав функцию GdiFlush.

Ваш ответ на вопрос