C#GDI画圆及填充
用C#代碼畫圓的時候不知大家遇到?jīng)]有遇到過這樣的問題,就是畫過圓以后,矩形的四角輪廓還是存在的,讓人感覺不夠完美,就如下圖所示:
我畫的這個是基于自定義控件的,聲明類以后繼承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);
????? }
大家也都知道雖說畫圓,但是畫的圓還是基于矩形的輪廓畫的,就是以矩形的左上角的坐標,矩形的長寬為半徑畫的圓,所以才形成了圓的后邊的四角顯示的現(xiàn)象,先看一下最終的效果:
可以看到這個圓形已經(jīng)沒有了矩形的四角,其實只需要設(shè)置圓形的顯示區(qū)域即可,實現(xiàn)的方法是:
???????? GraphicsPath g = new GraphicsPath();
????????? g.AddEllipse(0, 0, this.Width, this.Height);
????????? this.Region = new Region(g);//這句就是設(shè)置圓形的規(guī)格區(qū)域的
在上邊的代碼后邊加上這三行代碼即可達到預(yù)期的效果!
總結(jié)
以上是生活随笔為你收集整理的C#GDI画圆及填充的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面试风云录(01) - 怎样回答这两个问
- 下一篇: 用博客见证自己的成长