我們知道,在gdi+中,畫刷用於填充圖形形狀,如矩形、橢圓、扇形、多邊形和封閉路徑。在gdi+中,畫刷分為以下幾種:solidbrush,texturebrush,hatchbrush,lineargradientbrush和pathgradientbrush。在層次關係上,它們都位於system.drawing空間下,繼承自system.drawing.brush類。
其中solidbrush定義單色畫刷;texturebrush定義紋理畫刷,hatchbrush使用預定義的50餘種圖案做畫刷,lineargradientbrush是線性漸變畫刷,pathgradientbrush是通過漸變填充graphicspath物件的內部。
它們的繼承關係如下圖:
system.object
system.marshalbyrefobject
system.drawing.brush
system.drawing.solidbrush
system.drawing.texturebrush
system.drawing.drawing2d.hatchbrush
system.drawing.drawing2d.lineargradientbrush
system.drawing.drawing2d.pathgradientbrush
那麼,在wpf中,是如何定義畫刷的呢?它們與gdi+中的畫刷相比,又有些什麼獨特之處呢?
首先,我們來看看wpf中有哪些畫刷?
從大分類來講,wpf中的畫刷分為三大類:單色畫刷solidcolorbrush,可平鋪的畫刷tilebrush和漸變畫刷gradientbrush。
讓我們來看看它們都「長」成什麼樣子吧。還是以例項來走馬觀花式地看看它們。
下面是乙個空的「容器」,我們將用它來「裝」各種東西。
這裡的fill填充為空。
接著我們給它填充點單一的顏色(solidcolorbrush):
注意這裡的fill屬性,由於xaml最終被轉化為.net**,這裡的fill也將轉換為顏色為「#ffa21212」的solidcolorbrush。
如你對於wpf顏色方面有疑問,你可以參見我的這篇文章:gdi+與wpf中的顏色簡析
接下來我們改用線性漸變顏色填充它:(使用lineargradientbrush)
(注意:這裡使用了gradientstop來定義漸變顏色的關鍵色及對應的位置引數設定)
變多點花樣,我們就可以做成乙個帶立體感的圓形按鈕了:
(注:這裡只是將起始顏色的起始、終止點進行了反向,這樣就產生了立體的效果)
接著,我們使用radialgradientbrush:
再變變花樣,將中心點移一移,看看是什麼樣子的:
下面來看看使用imagebrush填充的效果(這裡使用了我的乙個好友的,美女喲!):
再來看看使用visualbrush填充的效果:
看到沒?這裡使用了rectangle,textblock,button幾種視覺化的控制項作為畫刷,填充到了ellipse中。
輪到drawingbrush出場了:
這裡使用了geometrydrawing作為內部填充的圖案,還使用了作為lineargradientbrush畫筆來繪製內部圖案的。
總結一下:
wpf的畫刷與gdi+中的畫刷相比,有很大的進步,功能更強大了。wpf新增了drawingbrush圖畫繪製畫刷(包括向量圖和點陣圖),而visualbrush是以視覺化的控制項作為畫刷,wpf新增了乙個雷射漸變畫刷radialgradientbrush。需要指出的是,wpf中多數顯示效果都使用硬體(顯示)的運算能力而不是軟體來展現,這都得益於directx 9/10的相關技術。
簡述WPF中的畫刷 Brush
原文 簡述wpf中的畫刷 brush 我們知道,在gdi 中,畫刷用於填充圖形形狀,如矩形 橢圓 扇形 多邊形和封閉路徑。在gdi 中,畫刷分為以下幾種 solidbrush,texturebrush,hatchbrush,lineargradientbrush和pathgradientbrush。...
簡述WPF中的畫刷 Brush
原文 簡述wpf中的畫刷 brush 我們知道,在gdi 中,畫刷用於填充圖形形狀,如矩形 橢圓 扇形 多邊形和封閉路徑。在gdi 中,畫刷分為以下幾種 solidbrush,texturebrush,hatchbrush,lineargradientbrush和pathgradientbrush。...
WPF私房菜之Brush畫刷
wpf中有七種畫刷,分別是 solidcolorbrush 使用單一連續顏色繪製區域 lineargradientbrush 使用漸變填充繪製區域 radialgradientbrush 使用徑向漸變填充繪製區域 imagebrush 使用可以被拉伸 縮放以及平鋪的影象繪製區域 drawingbru...