我GetDIBits
用来将位图数据从屏幕兼容的设备上下文中获取到某种格式的 DIB 中。我的印象是,当源位图为每像素 8 位或更少时,DC 仅用于合成颜色表。由于我的源位图是一个完整的 32 位彩色图像,而且这是一个一次性程序,而且我没有方便的屏幕 DC,我将 HDC 参数设置为 NULL。这没有用。一旦我抓住屏幕 DC 并将其传递进去,它就开始工作了。
这让我想知道为什么GetDIBits
需要设备上下文。它是干什么用的?
在:
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 使用来自此设备上下文的信息来决定如何执行转换。