我知道整个
Bitmap bmp = new Bitmap(100,100) ;
Graphics graphics = Graphics.FromImage(bmp) ;
但这不是我需要做的。基本上我要做的是稍微修改屏幕上的绘制方式(它是一个中间有一条线的矩形)。我需要更改矩形的背景(我可以使用像素比较或其他类似方法)。
如果我能以某种方式把它变成一个位图。没有办法(我可以告诉它获取/设置/修改)像素级别的图形对象。
Bob Powell 写了一篇关于直接访问图像位的优秀文章。
https://web.archive.org/web/20141229164101/http://bobpowell.net/lockingbits.aspx
您可以使用这样的 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)可以在MS BitmapData 类页面上找到一些示例。但是,如果这看起来很复杂,上述方法应该可以解决问题:)
一旦您使用了图形,只需保存位图 - 对图形所做的更改是对位图进行的。