簡述WPF中的畫刷 Brush

2021-08-28 14:31:03 字數 4004 閱讀 3545

我們知道,在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...