C# PictureBox 绘图:使用独立方法的高效技巧
在 C# 窗体应用程序中,可以在 PictureBox 控件上绘制自定义图形。然而,用户在尝试通过单独的方法执行此操作时可能会遇到问题。
问题:
用户可能希望创建一个方法来方便地在 PictureBox 上绘制圆圈,但发现该方法无法产生预期结果。问题方法初始化位图、图形对象和用于绘制圆圈的画笔。但是,当在 PictureBox 的 Paint 事件处理程序中调用时,它无法正确绘制圆圈。
解决方案:
要有效地使用单独的方法在 PictureBox 上绘图,务必明确目标是在 PictureBox 显示的图像中绘图,还是直接在控件本身绘图。
方法一:直接在控件上绘图
要直接在控件上绘图(不影响图像),请使用 PictureBox 的 Paint 事件处理程序,如下所示:
private void pictureBox2_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawEllipse(Pens.Red, new Rectangle(3, 4, 44, 44));
}
在这种情况下,绘图是持久的,图形与控件绑定,遵循控件的任何大小调整或移动。
方法二:在图像中绘图
要在 PictureBox 显示的图像中绘图,请创建一个单独的方法,并使用从 PictureBox 的 Image 属性获得的 Graphics 对象进行绘图。
void drawIntoImage()
{
using (Graphics G = Graphics.FromImage(pictureBox1.Image))
{
G.DrawEllipse(Pens.Orange, new Rectangle(13, 14, 44, 44));
}
pictureBox1.Refresh();
}
绘图完成后,调用 PictureBox 的 Refresh() 方法来更新显示。在这种情况下,图形对图像来说是持久的,并且会受到图像任何缩放或变换的影响。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3