在GDI +中绘制4位索引图像

时间:2012-03-15 12:08:50

标签: windows visual-c++ gdi+

我试图在4位索引位图上使用GDI + apis绘制一些基本的图形基元(线,矩形等)。我正在使用Bitmap()函数来创建位图并加载位图。

Bitmap myBitmap(100/*width*/,100/*height*/,PixelFormat4bppIndexed/*Pixel format*/);
Graphics graphics(&myBitmap);
SolidBrush brush(Color(255,128,0,0));
graphics.FillRectangle(&brush,0,0,100,100);

但这不起作用(没有创建矩形)。 可能是什么问题呢?我尝试手动使用LockBits并手动修改位,它运行良好,然后它为什么它不适用于Graphics gdi +操作。

1 个答案:

答案 0 :(得分:0)

最后我设法解决了我的问题。要在4位索引位图上使用Graphics对象执行gdi +操作,我们需要执行以下步骤。

  1. 直接创建4bpp HBITMAP或使用LoadImage从文件加载图像。
  2. 如果从4bpp文件加载,则从HPALETTE对象中的文件加载调色板。
  3. 创建桌面兼容的直流。
  4. 选择并在新创建的直流中实现调色板。
  5. 在您的直流中选择HBITMAP。
  6. 使用您的直流创建图形对象。
  7. 对4bpp索引进行GDI +操作。
  8. 虽然我没有试过8bpp,但我认为类似的操作也可以在8bpp上进行。

    希望这也能帮助别人。