日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#GDI画圆及填充

發布時間:2023/12/18 C# 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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);//這句就是設置圓形的規格區域的

在上邊的代碼后邊加上這三行代碼即可達到預期的效果!

總結

以上是生活随笔為你收集整理的C#GDI画圆及填充的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。