是否有可能在1bpp Bitmap上使用Graphics.DrawString?

时间:2011-10-03 04:33:48

标签: c# bitmap gdi

问题是相当自我解释,我想使用1bpp Bitmap,因为它会帮助我(很多)与接受1bbp位图的设备交谈(好吧,160x43字节数组是160x43位图图像,1bpp格式)

虽然C#允许我创建1bpp位图,但我想用Graphics对象来处理它。但是当我对此进行任何操作时,程序似乎表现得很奇怪。

可以对这些类型的位图进行一些图形操作吗?

我的代码段很短:

    Bitmap bwImage = new Bitmap(160, 43, System.Drawing.Imaging.PixelFormat.Format1bppIndexed);
        using (Graphics g = Graphics.FromImage(bwImage))
        {
            g.FillRectangle(Brushes.White, new Rectangle(0, 0, 160, 43));
            g.DrawString("ciao sono francesco", Font, Brushes.Black, new RectangleF(0f, 0f, 159f, 42f));
        } 

当我在这些调用之后执行与位图相关的任何事情时。我的位图没有改变(显然我在谈论其他位图)。就像GDI完全死了一样

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

Graphics类和Graphics.FromImage方法不支持索引位图。请参阅MSDNGraphics.FromImage方法的文档。解决问题的方法是对支持的位图格式(如PixelFormat.Format32bppRgb)执行所有图形操作,然后将位图转换为索引位图。转换很简单。您会找到此类转化的示例here

希望,这有帮助。