代码之家  ›  专栏  ›  技术社区  ›  Adrian McCarthy

在GetDIBits中HDC用于什么?

  •  5
  • Adrian McCarthy  · 技术社区  · 14 年前

    GetDIBits 将位图数据从屏幕兼容的设备上下文获取到特定格式的DIB。我当时的印象是,只有当源位图为每像素8位或更少时,DC才是合成颜色表所必需的。因为我的源位图是一个完整的32位彩色图像,这是一个一次性的程序,而且我手头没有屏幕DC,所以我将HDC参数设置为空。这没用。一旦我抓起屏幕上的DC并把它传进来,它就开始工作了。

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

    1 回复  |  直到 14 年前
        1
  •  0
  •   Michael Goldshteyn    14 年前

    在:

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

    推荐文章