C# 畫刷和填充的形狀

來源:互聯網
上載者:User

http://book.51cto.com/art/200908/148535.htm

閉合的形狀(例如,矩形或橢圓)由輪廓和內部組成。輪廓用鋼筆繪製,內部用畫刷填充。GDI+提供了幾種用於填充閉合形狀內部的畫刷類:SolidBrush、HatchBrush、TextureBrush和GradientBrush。所有這些類都是從Brush類繼承的。圖8-12顯示了用實心畫刷填充的橢圓和用陰影畫刷填充的矩形。

 
(點擊查看大圖)圖8-12  填充的圖形

1.使用實心畫刷

要填充閉合圖形,需要有Graphics對象和Brush對象。Graphics對象提供 FillRectangle和FillEllipse這樣的方法,BrushObject Storage Service填充的屬性,如顏色和圖案。Brush對象作為參數之一被傳遞到填充方法。例如用純紅色填充橢圓:

 
  1. SolidBrush mySolidBrush = new SolidBrush(Color.Red);  
  2. myGraphics.FillEllipse(mySolidBrush, 0, 0, 60, 40); 

請注意,在前面的樣本中,畫刷是從Brush繼承的SolidBrush類型。

2.使用陰影畫刷

用陰影畫刷填充圖形時,要指定前景色彩、背景色和陰影樣式。前景色彩是陰影的顏色。

 
  1. HatchBrush myHatchBrush =   
  2.    new HatchBrush(HatchStyle.Vertical, Color.Blue, Color.Green); 

GDI+提供了50多種陰影樣式,8-13所示的3種樣式分別是水平的、前置對角的和交叉的。

 
(點擊查看大圖)圖8-13  陰影樣式的圖形

在下面的執行個體中,繪製了一個圓形,它是使用交叉陰影畫刷填充的。

【執行個體8-9】  繪製填充圖形。

 
  1. Graphics MyGraphics = label1.CreateGraphics();  
  2.              
  3. // 使用陰影畫刷填充圖形  
  4. HatchBrush mybrush1 = new HatchBrush(  
  5.                         HatchStyle.HorizontalBrick,   
  6.                         Color.Red,  
  7.                         Color.Yellow);  
  8. MyGraphics.FillEllipse(mybrush1, 165, 5, 170, 170); 

運行結果8-14所示。

 
圖8-14  繪製填充圖形

3.使用紋理畫刷

有了紋理畫刷,就可以用位元影像中儲存的圖案來填充圖形。例如,假定在磁碟中儲存了一個名為MyTexture.bmp的圖片,下面的代碼通過使用MyTexture.bmp中的圖片來填充橢圓。

 
  1. Image myImage = Image.FromFile("MyTexture.bmp");  
  2. TextureBrush myTextureBrush = new TextureBrush(myImage);  
  3. myGraphics.FillEllipse(myTextureBrush, 0, 0, 100, 50); 

【執行個體8-10】  使用紋理填充圖形。

 
  1. Graphics myGraphics = label1.CreateGraphics();  
  2. Pen pen = new Pen(Color.Red,3);  
  3. myGraphics.DrawEllipse(pen, 25, 10, 260, 150);  
  4.  
  5. // 建立圖片對象  
  6. Image myImage = Image.FromFile("img.gif");  
  7. // 建立紋理畫刷  
  8. TextureBrush myTextureBrush = new TextureBrush(myImage);  
  9. // 使用紋理畫刷填充橢圓圖形  
  10. myGraphics.FillEllipse(myTextureBrush, 25, 10, 260, 150); 

運行結果8-15所示。

 
圖8-15  使用紋理填充的圖形

4.使用漸層畫刷

GDI+提供兩種漸層畫刷:線性和路徑。可以使用線性漸層畫刷來用顏色(在橫向、縱向或斜向移過圖形時會逐漸層化的顏色)填充圖形。

下面的樣本用水平漸層畫刷填充一個橢圓,當從橢圓的左邊緣向右邊緣移動時畫筆顏色會由藍變綠。

【執行個體8-11】  使用漸層畫刷填充圖形。

 
  1. Graphics myGraphics = label1.CreateGraphics();  
  2. Pen pen = new Pen(Color.Red, 3);  
  3. myGraphics.DrawEllipse(pen, 25, 10, 260, 150);  
  4.  
  5. Rectangle myRectangle = new Rectangle(25, 10, 260, 150);  
  6. // 建立漸層畫刷,顏色水平從左至右由藍變到綠  
  7. LinearGradientBrush myLinearGradientBrush = new LinearGradientBrush(  
  8.                 myRectangle,  
  9.                 Color.Blue,  
  10.                 Color.Green,  
  11.                 LinearGradientMode.Horizontal);  
  12. // 使用漸層畫刷填充橢圓  
  13. myGraphics.FillEllipse(myLinearGradientBrush, myRectangle); 

運行結果8-16所示。

 
圖8-16  使用漸層畫刷填充圖形
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.