Для чего нужен HDC в GetDIBits? - PullRequest
5 голосов
/ 18 октября 2010

Я использовал GetDIBits для получения растровых данных из контекста устройства, совместимого с экраном, в DIB определенного формата. У меня сложилось впечатление, что DC необходим только для синтеза таблицы цветов, когда исходная битовая карта составляет 8 бит на пиксель или меньше. Поскольку моим исходным растровым изображением было полное 32-битное цветное изображение, и это была одноразовая программа, и у меня не было удобного экрана, я установил для параметра HDC значение NULL. Это не сработало. Как только я взял экран DC и передал его, он начал работать.

Это заставило меня задуматься, почему GetDIBits требует контекст устройства. Для чего он используется?

1 Ответ

0 голосов
/ 18 октября 2010

В:

int SetDIBits(
  __in  HDC hdc,
  __in  HBITMAP hbmp,
  __in  UINT uStartScan,
  __in  UINT cScanLines,
  __in  const VOID *lpvBits,
  __in  const BITMAPINFO *lpbmi,
  __in  UINT fuColorUse
);

Второй аргумент hbmp является зависимым от устройства растровым изображением, которое будет изменено с использованием информации о цвете из независимого от устройства растрового изображения. hdc - дескриптор контекста устройства, от которого зависит это (зависящее от устройства) растровое изображение. Когда вызов сделан, Windows использует информацию из этого контекста устройства, чтобы решить, как выполнить преобразование.

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