如何从按钮单击事件调用绘制事件?

Max*_*nge 1 c# paint winforms

我有一个带有事件“paint”的图片框,我还在那里获得了用于绘制图形的代码。

如:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void pictureBox1_Paint(object sender, PaintEventArgs e)
    {
        Graphics graphics = e.Graphics;
        graphics.DrawEllipse(Pens.Blue, 10, 10, 100, 100);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        pictureBox1.Invalidate();
    }
}
Run Code Online (Sandbox Code Playgroud)

}

我的问题是。如何从 button_click 事件触发这些事件?我在网上搜索了很多,发现了很多 awnsers,如“.invalidate()”或“.Refresh()”和“.Update”。但是我的作业告诉我,我需要使用 .Refresh() 方法来完成,并且绘画需要在一个pictureBox 中。

我从 .Refresh() 方法中注意到的。是它擦除了图片框(绘制图片框是如何在初始化时创建的)。所以在按钮中触发 .Refresh 方法对我不起作用。

关于如何从按钮触发绘画事件的任何其他建议?

Tim*_*aut 5

这应该可以解决问题:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        using (var g = Graphics.FromImage(pictureBox1.Image))
        {
            g.DrawEllipse(Pens.Blue, 10, 10, 100, 100);
            pictureBox1.Refresh();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 请解释您的建议有何作用。 (3认同)