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