将hDC转换为4bpp位图

时间:2012-07-23 14:22:29

标签: c++ windows visual-studio gdi+

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

  1. 从hDC获取位图
  2. 将该位图转换为4bpp位图
  3. 将4bpp位图的原始位发送给其他方法。
  4. 我真的迷失了,我对GDI +并不熟悉并处理。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

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