5

GetDIBits用来将位图数据从屏幕兼容的设备上下文中获取到某种格式的 DIB 中。我的印象是,当源位图为每像素 8 位或更少时,DC 仅用于合成颜色表。由于我的源位图是一个完整的 32 位彩色图像,而且这是一个一次性程序,而且我没有方便的屏幕 DC,我将 HDC 参数设置为 NULL。这没有用。一旦我抓住屏幕 DC 并将其传递进去,它就开始工作了。

这让我想知道为什么GetDIBits需要设备上下文。它是干什么用的?

4

1 回答 1

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 使用来自此设备上下文的信息来决定如何执行转换。

于 2010-10-18T18:43:22.737 回答