如何将图形对象转换为位图(或将其作为位图访问)

本文关键字:位图 访问 对象 转换 图形 | 更新日期: 2023-09-27 18:34:29

我知道全部

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的评论后,如果性能对你来说是一个问题,那么他是对的!(谢谢,我不知道锁位! +1(一些示例可以在 MS 位图数据类页面上找到。但是,如果这看起来很复杂,上述方法应该可以解决问题:)