C GDI畫圓及填充

2021-08-08 18:10:51 字數 1168 閱讀 3564

用c#**畫圓的時候不知大家遇到沒有遇到過這樣的問題,就是畫過圓以後,矩形的四角輪廓還是存在的,讓人感覺不夠完美,就如下圖所示:

我畫的這個是基於自定義控制項的,宣告類以後繼承control類,然後在這個類中重寫onpaint的事件,完成上圖所需要的**:

protected override void onpaint(painteventargs e)

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 畫圓,可以調整大小等功能

問題情境 上司對自己的關懷,稱現有的畫圈圈區域不太理想,需要有 可拖拽移動圓的位置,滾輪可以控制大小,邊界也可以通過拖拽調整圓的長軸短軸調整大小。原理描述 1.畫形狀容易實現 2.調整大小通過整個窗體的滑鼠move事件。來進行實時重新整理顯示 3.拖拽移動位置用mousedown事件和mousemo...

UIBezierPath基本用法及畫圓角

首先說一下畫圓角吧,其實uibezierpath的畫角規則是這樣的 import viewcontroller.h inte ce viewcontroller property nonatomic,strong cashapelayer shapelayer property nonatomic,...

C GDI三種座標系及顏色等常用結構

gdi 定義了三種座標系統,並提供了三種座標轉換的方法graphics.transformpoints 本節介紹gdi 中常用的結構,包括 point pointf size sizef rectangle rectanglef color等。它們都在名字空間system.drawing中定義的。點...