C# PictureBox 绘图:使用独立方法的高效技巧
在 C# 窗体应用程序中,可以在 PictureBox 控件上绘制自定义图形。然而,用户在尝试通过单独的方法执行此操作时可能会遇到问题。
问题:
用户可能希望创建一个方法来方便地在 PictureBox 上绘制圆圈,但发现该方法无法产生预期结果。问题方法初始化位图、图形对象和用于绘制圆圈的画笔。但是,当在 PictureBox 的 Paint 事件处理程序中调用时,它无法正确绘制圆圈。
解决方案:
要有效地使用单独的方法在 PictureBox 上绘图,务必明确目标是在 PictureBox 显示的图像中绘图,还是直接在控件本身绘图。
方法一:直接在控件上绘图
要直接在控件上绘图(不影响图像),请使用 PictureBox 的 Paint 事件处理程序,如下所示:
<code class="language-csharp">private void pictureBox2_Paint(object sender, PaintEventArgs e) { e.Graphics.DrawEllipse(Pens.Red, new Rectangle(3, 4, 44, 44)); }</code>
在这种情况下,绘图是持久的,图形与控件绑定,遵循控件的任何大小调整或移动。
方法二:在图像中绘图
要在 PictureBox 显示的图像中绘图,请创建一个单独的方法,并使用从 PictureBox 的 Image 属性获得的 Graphics 对象进行绘图。
<code class="language-csharp">void drawIntoImage() { using (Graphics G = Graphics.FromImage(pictureBox1.Image)) { G.DrawEllipse(Pens.Orange, new Rectangle(13, 14, 44, 44)); } pictureBox1.Refresh(); }</code>
绘图完成后,调用 PictureBox 的 Refresh() 方法来更新显示。在这种情况下,图形对图像来说是持久的,并且会受到图像任何缩放或变换的影响。
以上是如何在 C# 中使用单独的方法在 PictureBox 上高效绘图?的详细内容。更多信息请关注PHP中文网其他相关文章!