C#GDI画圆及填充

来源:互联网 发布:阿里云客服招聘 编辑:程序博客网 时间:2024/05/10 05:49

用C#代码画圆的时候不知大家遇到没有遇到过这样的问题,就是画过圆以后,矩形的四角轮廓还是存在的,让人感觉不够完美,就如下图所示:

矩形

我画的这个是基于自定义控件的,声明类以后继承Control类,然后在这个类中重写OnPaint的事件,完成上图所需要的代码:

protected override void OnPaint(PaintEventArgs e)
      {

         if(this.Width!=This.Heigth)

        {

            this.Width=this.Heigth;//这句代码就是确保画的控件外观始终保持圆

        }
          Pen p = Pens.Black;//声明一个画笔
          //Brush b = new SolidBrush(Color.Red);//声明的画刷
          Brush b = new LinearGradientBrush(new Point(0, this.Width / 2), new Point(this.Height, this.Width / 2), Color.FromArgb(50, 50, 100),      Color.FromArgb(50, 50, 200));//LinearGradientBrush是要System.Drawing.Drawing2D;命名控件下的,可以是填充颜色渐变         

         Rectangle r=new Rectangle(0,0,this.Width,this.Height);//标识圆的大小
          e.Graphics.DrawEllipse(p,r);
          e.Graphics.FillEllipse(b, r);

          base.OnPaint(e);
      }

大家也都知道虽说画圆,但是画的圆还是基于矩形的轮廓画的,就是以矩形的左上角的坐标,矩形的长宽为半径画的圆,所以才形成了圆的后边的四角显示的现象,先看一下最终的效果:

截图1

可以看到这个圆形已经没有了矩形的四角,其实只需要设置圆形的显示区域即可,实现的方法是:

         GraphicsPath g = new GraphicsPath();
          g.AddEllipse(0, 0, this.Width, this.Height);
          this.Region = new Region(g);//这句就是设置圆形的规格区域的

在上边的代码后边加上这三行代码即可达到预期的效果!

原创粉丝点击