Как создать память DC с 24 битами на пиксель? - PullRequest
2 голосов
/ 30 сентября 2011

Мне нужно, чтобы он работал с данными RGB24, используя функции GDI (в частности, StretchBlt (), что довольно быстро), и я не могу использовать CreateCompatibleDC (), поскольку он может создавать память DC только с глубиной цвета другого DC.Обычно он используется с экраном DC (путем передачи NULL-указателя на функцию), и обычно экран имеет глубину цвета, равную значению 32. Кроме того, я не могу на это полагаться, потому что, если настройки экрана изменены, мое приложение, вероятно, не будет работать.

Поэтому мне нужен какой-то способ создать память постоянного тока с определенной глубиной цвета.До сих пор я нашел только один способ использования функции CreateDC (), но он требует многих специфических для устройства параметров и кажется мне несколько ненадежным.Более того, существует слишком много полей для заполнения соответствующими значениями для вызова CreateDC ().

Есть ли какой-нибудь более простой способ создания определенного DC памяти и не полагаться на некоторые устройства?Или даже если создать память DC с 24 битами на секунду?

PS Мне это нужно для быстрой графики.Я попытался вручную добавить альфа-канал в растровое изображение для использования его с совместимым с экраном 32bpp памяти DC, и это сработало, но было слишком медленно.И, как я сказал выше, я не могу полагаться на настройки экрана, которые можно изменить.

1 Ответ

5 голосов
/ 30 сентября 2011

Биты на пиксель на самом деле не зависят от DC, но от выбранного в него растрового изображения.Создайте растровое изображение 24bpp с CreateDIBSection, затем выделите его в DC памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...