深入c# GDI+簡(jiǎn)單繪圖的具體操作步驟(二)
在上一篇里已經(jīng)向大家介紹了如何使用GDI+繪制簡(jiǎn)單的圖像,這一片繼續(xù)向大家介紹其它一些繪圖知識(shí).
1.首先我們來(lái)看下上一片中我們使用過的Pen.
Pen的屬性主要有: Color(顏色),DashCap(短劃線終點(diǎn)形狀),DashStyle(虛線樣式),EndCap(線尾形狀), StartCap(線頭形狀),Width(粗細(xì))等.
我們可以用Pen 來(lái)畫虛線,帶箭頭的直線等
Pen p = new Pen(Color.Blue, 5);//設(shè)置筆的粗細(xì)為,顏色為藍(lán)色
Graphics g = this.CreateGraphics();
//畫虛線
p.DashStyle = DashStyle.Dot;//定義虛線的樣式為點(diǎn)
g.DrawLine(p, 10, 10, 200, 10);
//自定義虛線
p.DashPattern = new float[] { 2, 1 };//設(shè)置短劃線和空白部分的數(shù)組
g.DrawLine(p, 10, 20, 200, 20);
//畫箭頭,只對(duì)不封閉曲線有用
p.DashStyle = DashStyle.Solid;//恢復(fù)實(shí)線
p.EndCap = LineCap.ArrowAnchor;//定義線尾的樣式為箭頭
g.DrawLine(p, 10, 30, 200, 30);
g.Dispose();
p.Dispose();
以上代碼運(yùn)行結(jié)果:

2.接下來(lái)我們來(lái)看下Brush的使用
作用:我們可以用畫刷填充各種圖形形狀,如矩形、橢圓、扇形、多邊形和封閉路徑等,主要有幾種不同類型的畫刷:
•SolidBrush:畫刷最簡(jiǎn)單的形式,用純色進(jìn)行繪制
•HatchBrush:類似于 SolidBrush,但是可以利用該類從大量預(yù)設(shè)的圖案中選擇繪制時(shí)要使用的圖案,而不是純色
•TextureBrush:使用紋理(如圖像)進(jìn)行繪制
•LinearGradientBrush:使用沿漸變混合的兩種顏色進(jìn)行繪制
•PathGradientBrush :基于編程者定義的唯一路徑,使用復(fù)雜的混合色漸變進(jìn)行繪制
我們這里只是簡(jiǎn)單介紹使用其中的幾種:
Graphics g = this.CreateGraphics();
Rectangle rect = new Rectangle(10, 10, 50, 50);//定義矩形,參數(shù)為起點(diǎn)橫縱坐標(biāo)以及其長(zhǎng)和寬
//單色填充
SolidBrush b1 = new SolidBrush(Color.Blue);//定義單色畫刷
g.FillRectangle(b1, rect);//填充這個(gè)矩形
//字符串
g.DrawString("字符串", new Font("宋體", 10), b1, new PointF(90, 10));
//用圖片填充
TextureBrush b2 = new TextureBrush(Image.FromFile(@"e:\picture\1.jpg"));
rect.Location = new Point(10, 70);//更改這個(gè)矩形的起點(diǎn)坐標(biāo)
rect.Width = 200;//更改這個(gè)矩形的寬來(lái)
rect.Height = 200;//更改這個(gè)矩形的高
g.FillRectangle(b2, rect);
//用漸變色填充
rect.Location = new Point(10, 290);
LinearGradientBrush b3 = new LinearGradientBrush(rect, Color.Yellow , Color.Black , LinearGradientMode.Horizontal);
g.FillRectangle(b3, rect);
運(yùn)行效果圖:

3.坐標(biāo)軸變換
在winform中的坐標(biāo)軸和我們平時(shí)接觸的平面直角坐標(biāo)軸不同,winform中的坐標(biāo)軸方向完全相反:窗體的左上角為原點(diǎn)(0,0),水平向左則X增大,垂直下向則Y增大
接下來(lái),我們來(lái)實(shí)際操作下,通過旋轉(zhuǎn)坐標(biāo)軸的方向來(lái)畫出不同角度的圖案,或通過更改坐標(biāo)原點(diǎn)的位置來(lái)平衡坐標(biāo)軸的位置.
Graphics g = this.CreateGraphics();
//單色填充
//SolidBrush b1 = new SolidBrush(Color.Blue);//定義單色畫刷
Pen p = new Pen(Color.Blue,1);
//轉(zhuǎn)變坐標(biāo)軸角度
for (int i = 0; i < 90; i++)
{
g.RotateTransform(i);//每旋轉(zhuǎn)一度就畫一條線
g.DrawLine(p, 0, 0, 100, 0);
g.ResetTransform();//恢復(fù)坐標(biāo)軸坐標(biāo)
}
//平移坐標(biāo)軸
g.TranslateTransform(100, 100);
g.DrawLine(p, 0, 0, 100, 0);
g.ResetTransform();
//先平移到指定坐標(biāo),然后進(jìn)行度旋轉(zhuǎn)
g.TranslateTransform(100,200);
for (int i = 0; i < 8; i++)
{
g.RotateTransform(45);
g.DrawLine(p, 0, 0, 100, 0);
}
g.Dispose();
運(yùn)行效果圖:

4.最后我們來(lái)看下Graphics這個(gè)畫板上我們還可以畫什么
其實(shí)我們上面用到的都是在畫一些簡(jiǎn)單的圖形,直線,矩形,扇形,圓孤等,我們還可以用它來(lái)繪制圖片,這可以用它的DrawImage方法.這里我不詳細(xì)講解,大家有興趣可以自己去MSDN了解下.我們后面會(huì)講到的截圖就會(huì)用到這個(gè)方法.
- C#利用GDI+給圖片添加文字(文字自適應(yīng)矩形區(qū)域)
- C#利用GDI+畫圖的基礎(chǔ)實(shí)例教程
- C# 使用 GDI+ 實(shí)現(xiàn)添加中心旋轉(zhuǎn)(任意角度)的文字
- C#使用GDI+創(chuàng)建縮略圖實(shí)例
- C#利用GDI+繪制旋轉(zhuǎn)文字等效果實(shí)例
- C#常用GDI+文字操作匯總
- 深入c# GDI+簡(jiǎn)單繪圖的具體操作步驟(四)
- 深入c# GDI+簡(jiǎn)單繪圖的具體操作步驟(三)
- 深入c# GDI+簡(jiǎn)單繪圖的具體操作步驟(一)
- BarCode條形碼基于C# GDI+ 的實(shí)現(xiàn)方法詳解
- C#圖形編程GDI+基礎(chǔ)介紹
相關(guān)文章
C# TreeView無(wú)限目錄樹實(shí)現(xiàn)方法
這篇文章主要介紹了C# TreeView無(wú)限目錄樹實(shí)現(xiàn)方法,實(shí)例分析了TreeView節(jié)點(diǎn)操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06C#實(shí)現(xiàn)將千分位字符串轉(zhuǎn)換成數(shù)字的方法
這篇文章主要介紹了C#實(shí)現(xiàn)將千分位字符串轉(zhuǎn)換成數(shù)字的方法,很適合初學(xué)者更好的理解C#字符串原理,需要的朋友可以參考下2014-08-08asp.net新聞列表生成靜態(tài)頁(yè)之批量和單頁(yè)生成
web程序的高訪問量、大數(shù)據(jù)量、高效的用戶體驗(yàn)度,使靜態(tài)頁(yè)技術(shù)在越來(lái)越多的網(wǎng)站上發(fā)揮作用。這篇文章主要介紹asp.net新聞列表生成靜態(tài)頁(yè)之批量和單頁(yè)生成,有需要的朋友可以參考下2015-08-08C#使用FtpWebRequest與FtpWebResponse完成FTP操作
這篇文章介紹了C#使用FtpWebRequest與FtpWebResponse完成FTP操作的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05c# Selenium爬取數(shù)據(jù)時(shí)防止webdriver封爬蟲的方法
這篇文章主要介紹了c# Selenium爬取數(shù)據(jù)時(shí)防止webdriver封爬蟲的方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下2021-01-01