0

我正在开发一个应用程序,该应用程序对 HDC 中选择的 HBITMAP 进行一些 GDI+ 绘图。绘制完成后,我需要:

  1. 从hDC获取位图
  2. 将该位图转换为 4bpp 位图
  3. 将 4bpp 位图的原始位发送到其他方法。

我真的迷路了,我对 GDI+ 和句柄真的很陌生。谁能帮我吗?

4

2 回答 2

4

GetDIBits是用于转换和检索原始位的函数,即 (2) 和 (3)。

如果您还没有 BITMAP 的句柄,则必须使用CreateCompatibleDC创建一个新的 DC ,在其上创建一个兼容的位图,然后从源 DC 到目标 DC 执行 BitBlt。然后在目标 DC 和位图上执行 GetDIBits 以检索您需要的数据。

于 2012-07-23T14:37:42.450 回答
1

首先,您绘制到 HDC,而不是 HBITMAP。HBITMAP 获取通过 HDC 绘制的数据。您需要创建一个新的位图来获取 4bpp 数据。然而,这样的颜色深度太低(仅限 16 色)。它是基于调色板的吗?转换(减少颜色深度)可能不是很好,或者可能无法按照您想要的方式工作。我建议从 32 位位图中读取 RGB 值,然后使用您自己的代码将它们转换为 4bpp。否则,您将需要一个图像库,它将根据需要执行转换。

于 2012-07-23T14:43:42.160 回答