如何将Graphics对象转换为Bitmap(或将其作为Bitmap访问)

时间:2012-05-17 03:05:58

标签: c# bitmap

我知道整个

Bitmap bmp = new Bitmap(100,100) ;
Graphics graphics = Graphics.FromImage(bmp) ;

但这不是我需要做的。基本上我要做的是略微修改屏幕上绘制的东西(它是一个中间有一条线的矩形)。我需要更改矩形的背景(我可以使用像素比较或其他类似的方法)。

如果我能以某种方式将其变成位图。在像素级别上没有办法(我可以告诉获取/设置/修改)图形对象。

3 个答案:

答案 0 :(得分:0)

鲍勃鲍威尔撰写了一篇关于直接访问图像位的优秀文章。

http://www.bobpowell.net/lockingbits.htm

答案 1 :(得分:0)

您可以使用for循环执行此操作:

for(int i = 0; i < bmp.Width; i++)
{
    for(int j = 0; j < bmp.Height; j++)
    {
        var pixel = bmp.GetPixel(i, j);
        //do stuff with pixel here :)
    }
}
编辑:在看到Tilak的评论之后,如果表演对你来说是一个问题那么他是对的! (谢谢,我不知道LockBits!+1)有些例子可以在MSDN BitmapData Class page找到。但是,如果这看起来很复杂,上面的方法应该可以解决问题:)

答案 2 :(得分:0)

一旦你使用了图形,只需保存位图 - 用图形做的更改就是对位图进行的。