我不知道该向我的方法传递什么来正确调用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);
}