C#画圆 GDI+
用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);
}
大家也都知道虽说画圆,但是画的圆还是基于矩形的轮廓画的,就是以矩形的左上角的坐标,矩形的长宽为半径画的圆,所以才形成了圆的后边的四角显示的现象,先看一下最终的效果:
可以看到这个圆形已经没有了矩形的四角,其实只需要设置圆形的显示区域即可,实现的方法是:
GraphicsPath g = new GraphicsPath();
g.AddEllipse(0, 0, this.Width, this.Height);
this.Region = new Region(g);//这句就是设置圆形的规格区域的
在上边的代码后边加上这三行代码即可达到预期的效果!