如何从方法调用'draw circle'以在图片框中绘制



我不知道该向我的方法传递什么来正确调用Circle绘图。这是我的代码:

    private void Circle()
    {
        Graphics g1 = e.Graphics;
        Pen p1 = new Pen(Color.Black);
        g1.DrawEllipse(p1, 12, 12, 50, 50);
    }
    private void pictureBox1_Paint(object sender, PaintEventArgs e)
    {
        Circle();
    }

这不起作用,因为没有"e"。

如果我从重写代码

Graphics g1 = e.Graphics;

Graphics g1 = this.CreateGraphics();

它会画圆圈,但不会在图片框中。我需要一个圆圈在图片框里。

如果您的方法需要对PaintEventArgs的引用,那么为什么不提供一个呢?类似这样的东西:

private void Circle(PaintEventArgs e)
{
    Graphics g1 = e.Graphics;
    Pen p1 = new Pen(Color.Black);
    g1.DrawEllipse(p1, 12, 12, 50, 50);
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
    Circle(e);
}

这将允许其他绘制事件处理程序也将该方法用于自己的控件。

要获得对Graphics对象的引用,可以通过参数提供。像

private void Circle(Graphics g)
{
    Pen p1 = new Pen(Color.Black);
    g.DrawEllipse(p1, 12, 12, 50, 50);
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
    Graphics myg = e.Graphics;
    Circle(myg);
}

最新更新