畫刷是啥玩意兒?哈,其實畫刷是用來塗鴉,真的,沒騙你,至於你信不信,反正我信了。
本文通過價紹幾個典型的畫刷,使你明白畫刷就是用來塗鴉的。
一、純色畫刷SolidColorBrush。
這個傢伙比較“純”,當然它不是裝純,的確很純,純到只用一種顏色,所以叫“單色畫刷”。
來,看看這個樣本,我們畫一個矩形(放在一個Canvas中),然後用這個純傢伙來打扮一下。
[html] view plaincopyprint?
- <Rectangle Canvas.Left="5" Canvas.Top="130" Width="85" Height="75">
- <Rectangle.Fill>
- <SolidColorBrush Color="White"/>
- </Rectangle.Fill>
- </Rectangle>
因為內建有轉換器,微軟一向是關心開發人員的身體健康的,所以,MS不捨得我們寫代碼的時候過多勞累,所以,上面的內容可以簡寫為。
[html] view plaincopyprint?
- <Rectangle Canvas.Left="110" Canvas.Top="156"
- Width="120" Height="120" Fill="Blue"/>
這兩段代碼實現的效果是一樣的,很明顯,你會更喜歡後者,因為它簡練了N多。
接下來我們看看Color屬性有哪些表示方法。
1、名字,比如Blue,不用我翻譯了,明白了;
2、RGB,如#CCCCCC,如果你幹過網頁設計,寫過CSS樣式,你懂的;
3、ARGB,如#0CBBBBBB,其實就是在前面加一個A值,0-1之間,透明度。
可以說,你記住了以上三點,你就可以寫出數不盡的顏色。
二、漸層畫刷。
如果你玩過像Photoshop這些繪圖軟體,或者你做過GDI編程,當然你玩過WPF更好,簡直一模一樣。
漸層顏色,我們可以通俗地理解為:由N多種顏色組成,這些顏色有各自的分布主式,並且,在各段顏色之間都有一個過渡。
下面看看兩種漸層形式:線性和徑向。
(一)線性漸層
先看看下面的圖,相信沒有什麼文字可以比圖片更直觀,相信你一看就知道何為線性漸層,只可意會啊。
好,上面的效果是如何?的呢?用到這個類LinearGradientBrush。看一看XAML代碼。
[html] view plaincopyprint?
- <Rectangle Canvas.Top="312" Canvas.Left="40" Width="278" Height="95">
- <Rectangle.Fill>
- <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
- <GradientStop Color="Yellow" Offset="0"/>
- <GradientStop Color="Green" Offset="0.5"/>
- <GradientStop Color="Orange" Offset="1"/>
- </LinearGradientBrush>
- </Rectangle.Fill>
- </Rectangle>
其中,我們要關注幾個地方:
1、StartPoint,線性漸層的起始點,既然是線性了,肯定有始有終的了,X和Y都在0和1之間;
2、EndPoint,結束點,同樣,值範圍在0-1之間,包含0和1.
3、0,0點在左上方,1,1點在右下角。
每個LinearGradientBrush都可以包含N個GradientStop,表示每種顏色的終點位置,如所示。
如果你還不是很理解,最好的法子就是多練習。
[html] view plaincopyprint?
- <Ellipse Canvas.Top="465" Canvas.Left="40" Width="150" Height="120">
- <Ellipse.Fill>
- <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
- <GradientStop Color="#FF8E8EE8" />
- <GradientStop Color="#FFDBBC55" Offset="0.6" />
- <GradientStop Color="#FF61DDF5" Offset="0.99" />
- </LinearGradientBrush>
- </Ellipse.Fill>
- </Ellipse>
以上兩個例子的運行效果如所示。
(二)放射狀漸層
名字不好理解,還是看圖寫作文吧。
怎麼樣,美嗎?看看實現的XAML代碼吧。
[html] view plaincopyprint?
- <Rectangle Canvas.Left="242" Canvas.Top="465" Width="150" Height="150">
- <Rectangle.Fill>
- <RadialGradientBrush Center="0.5,0.5" RadiusX="0.5" RadiusY="0.5">
- <GradientStop Color="Green" Offset="0.2"/>
- <GradientStop Color="LightBlue" Offset="0.7"/>
- <GradientStop Color="Yellow" Offset="1"/>
- </RadialGradientBrush>
- </Rectangle.Fill>
- </Rectangle>
看看,有幾個屬性比刺眼。
1、Center,中心點,你看到了,放射狀漸層很像一個圓,有中心點,有半徑,同樣,取值範圍是[0,1]。
2、RadiusX和RadiusY,同理,範圍在[0,1],橫軸和縱軸上的半徑。
可以發現這些值都是相對的邏輯值,這樣使用比絕對位置更靈活。
三、視頻畫刷VideoBrush。
這個要配合MediaElement一起使用,在前面的文章中已經介紹過。
四、圖象畫刷ImageBrush。
如果你覺得前面的都是用顏色的,不夠爽,不妨看看這個,用圖片來填充。
實現的XAML如下。
[html] view plaincopyprint?
- <Ellipse Canvas.Left="40" Canvas.Top="445" Width="398" Height="248">
- <Ellipse.Fill>
- <ImageBrush ImageSource="test.jpg"/>
- </Ellipse.Fill>
- </Ellipse>
這個就簡單了,ImageSource屬性就是指向一張圖片,使用方法與Image控制項類似。