填充椭圆误差

FillEllipse Error

我得到一个 JIT 编译错误 运行 这段代码

void draw(PaintEventArgs e)
{
     Graphics gr =this.CreateGraphics();
     Pen pen = new Pen(Color.Black, 5);
     int x = 50;
     int y = 50;
     int width = 100;
     int height = 100;
     gr.DrawEllipse(pen, x, y, width, height);
     gr.Dispose();
     SolidBrush brush = new SolidBrush(Color.White);
     gr.FillEllipse(brush, x,y,width,height);
 }

错误说:系统参数异常:参数无效 FillEllipse(Brush, int32 x,int32 y,int32 width,int 32 height);

由于您传递的是 PaintEventArgs e,您可以而且应该使用它的 e.Graphics

并且由于您没有创建它,所以不要丢弃它!

但是您创建的那些 PensBrushes 应该被处理掉,或者更好的是,在 using 子句中创建它们!对于 SolidBrush 我们可以使用标准的 Brush,我们不能更改也不能丢弃它!

为了确保填充不会覆盖绘制我已经切换了顺序。

所以,试试这个:

void draw(PaintEventArgs e)
{
     Graphics gr = e.Graphics;
     int x = 50;
     int y = 50;
     int width = 100;
     int height = 100;
     gr.FillEllipse(Brushes.White, x, y, width, height);
     using (Pen pen = new Pen(Color.Black, 5) )
        gr.DrawEllipse(pen, x, y, width, height);
 }