2012-05-17 30 views
1

我知道整个我怎样才能得到一个转换Graphics对象为位图(或访问它作为一个位图)

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

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

如果我能以某种方式将它变成一个位图。没有办法(我可以告诉得到/设置/修改)像素级别上的图形对象。

+0

你想改变位图图像的背景颜色? –

+0

我很抱歉,我不能说清楚,我需要更改已经绘制到图形对象的矩形的背景。 –

回答

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 :) 
    } 
} 

编辑:看到提拉克的评论后,如果性能是你的一个问题,那么他是对的! (谢谢,我不知道LockBits!+1)的一些例子可以在MSDN BitmapData Class page找到。但是,如果这看起来很复杂,上面的方法应该做的伎俩:)

+1

这很慢。为了更快的复读,lockBits更好地使用P/Invoke – Tilak

0

一旦你使用图形,只保存位图 - 图形所做的更改是对位图。

相关问题