c# GDI+簡單繪圖(二)

來源:互聯網
上載者:User
在上一片裡已經向大家介紹了如何使用GDI+繪製簡單的映像,這一片繼續向大家介紹其它一些繪圖知識.

1.首先我們來看下上一片中我們使用過的Pen.

Pen的屬性主要有: Color(顏色),DashCap(短劃線終點形狀),DashStyle(虛線樣式),EndCap(線尾形狀), StartCap(線頭形狀),Width(粗細)等.

我們可以用Pen 來畫虛線,帶箭頭的直線等

Pen  p = new  Pen(Color.Blue, 5);//設定筆的粗細為,顏色為藍色Graphics  g = this.CreateGraphics();//畫虛線p.DashStyle = DashStyle.Dot;//定義虛線的樣式為點g.DrawLine(p, 10, 10, 200, 10);//自訂虛線p.DashPattern = new  float[] { 2, 1 };//設定短劃線和空白部分的數組g.DrawLine(p, 10, 20, 200, 20);//畫箭頭,只對不封閉曲線有用p.DashStyle = DashStyle.Solid;//恢複實線p.EndCap = LineCap.ArrowAnchor;//定義線尾的樣式為箭頭g.DrawLine(p, 10, 30, 200, 30);g.Dispose();p.Dispose();

以上代碼運行結果:

2.接下來我們來看下Brush的使用

作用:我們可以用畫刷填充各種圖形形狀,如矩形、橢圓、扇形、多邊形和封閉路徑等,主要有幾種不同類型的畫刷:

• SolidBrush:畫刷最簡單的形式,用純色進行繪製

• HatchBrush:類似於 SolidBrush,但是可以利用該類從大量預設的圖案中選擇繪製時要使用的圖案,而不是純色

• TextureBrush:使用紋理(像)進行繪製

• LinearGradientBrush:使用沿漸層混合的兩種顏色進行繪製

• PathGradientBrush :基於編程者定義的唯一路徑,使用複雜的混合色漸層進行繪製

我們這裡只是簡單介紹使用其中的幾種:

Graphics g = this.CreateGraphics();Rectangle rect = new Rectangle(10, 10, 50, 50);//定義矩形,參數為起點橫縱座標以及其長和寬//單色填充SolidBrush b1 = new SolidBrush(Color.Blue);//定義單色畫刷          g.FillRectangle(b1, rect);//填充這個矩形//字串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);//更改這個矩形的起點座標rect.Width = 200;//更改這個矩形的寬來rect.Height = 200;//更改這個矩形的高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);

運行:

3.座標軸變換

在winform中的座標軸和我們平時接觸的平面直角座標軸不同,winform中的座標軸方向完全相反:表單的左上方為原點(0,0),水平向左則X增大,垂直下向則Y增大

接下來,我們來實際操作下,通過旋轉座標軸的方向來畫出不同角度的圖案,或通過更改座標原點的位置來平衡座標軸的位置.

Graphics g = this.CreateGraphics();//單色填充//SolidBrush b1 = new SolidBrush(Color.Blue);//定義單色畫刷          Pen p = new Pen(Color.Blue,1);//轉變座標軸角度for (int i = 0; i < 90; i++){    g.RotateTransform(i);//每旋轉一度就畫一條線    g.DrawLine(p, 0, 0, 100, 0);    g.ResetTransform();//恢複座標軸座標}//平移座標軸g.TranslateTransform(100, 100);g.DrawLine(p, 0, 0, 100, 0);g.ResetTransform();//先平移到指定座標,然後進行度旋轉g.TranslateTransform(100,200);for (int i = 0; i < 8; i++){g.RotateTransform(45);g.DrawLine(p, 0, 0, 100, 0);}g.Dispose();

運行:

4.最後我們來看下Graphics這個畫板上我們還可以畫什麼

其實我們上面用到的都是在畫一些簡單的圖形,直線,矩形,扇形,圓孤等,我們還可以用它來繪製圖片,這可以用它的DrawImage方法.這裡我不詳細講解,大家有興趣可以自己去MSDN瞭解下.我們後面會講到的就會用到這個方法.


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.