我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
);
Run Code Online (Sandbox Code Playgroud)
第二个参数hbmp是设备相关位图,它将使用设备无关位图的颜色信息进行更改。这hdc是该(设备相关)位图所依赖的设备上下文的句柄。进行调用时,Windows 使用此设备上下文中的信息来决定如何执行转换。