gpt4 book ai didi

c# - 在 C# 中将图形转换为图像

转载 作者:行者123 更新时间:2023-11-30 19:34:00 25 4
gpt4 key购买 nike

我在 Windows 窗体上有一个图片框。

我执行以下操作以将 PNG 文件加载到其中。

Bitmap bm = (Bitmap)Image.FromFile("Image.PNG", true);
Bitmap tmp;

public Form1() {
InitializeComponent();
this.tmp = new Bitmap(bm.Width, bm.Height);
}

private void pictureBox1_Paint(object sender, PaintEventArgs e) {
e.Graphics.DrawImage(this.bm, new Rectangle(0, 0, tmp.Width, tmp.Height), 0, 0, tmp.Width, tmp.Height, GraphicsUnit.Pixel);
}

但是,我需要在图像上画东西,然后再次显示结果。只能通过 Graphics 类绘制矩形。

我需要在图像上绘制所需的矩形,再次使其成为 Image 类的实例并将其保存到 this.bm

我可以添加一个执行 this.pictureBox1.Refresh(); 的按钮,强制重新绘制 pictureBox,但我无法将 Graphics 转换为 Image。因此,我无法将编辑保存到 this.bm 位图中。

这是我的问题,我看不出有什么办法。

最佳答案

您需要做的是使用 Graphics.FromImage方法,这将允许您直接在图像上绘制,而不是从 Paint 方法中创建的临时 Graphics 对象:

using (Graphics g = Graphics.FromImage(this.bm))
{
g.DrawRectangle(...);
}

执行此操作而不是(或除此之外) Hook PictureBoxPaint 方法。这样,您根本不需要使用临时图像或 Graphics 对象,当您完成修改原始位图 (this.bm) 后,您可以调用 pictureBox1.Refresh 强制重新显示图像。

关于c# - 在 C# 中将图形转换为图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2623206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com