首页 > 后端开发 > C++ > 如何在 C# 中使用单独的方法在 PictureBox 上高效绘图?

如何在 C# 中使用单独的方法在 PictureBox 上高效绘图?

Patricia Arquette
发布: 2025-01-21 11:21:10
原创
540 人浏览过

How Can I Efficiently Draw on a PictureBox Using a Separate Method in C#?

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板