我正在使用 GetDIBits 要将屏幕兼容设备上下文中的位图数据获取到特定格式的DIB中。我的印象是,当源位图为每金图8位或更小时时,直流只需要合成颜色表。由于我的源位图是完整的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使用此设备上下文的信息来决定如何执行转换。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top