Windows Phone開發(fā)(31):畫刷
畫刷是啥玩意兒?哈,其實畫刷是用來涂鴉,真的,沒騙你,至于你信不信,反正我信了。
本文通過價紹幾個典型的畫刷,使你明白畫刷就是用來涂鴉的。
一、純色畫刷SolidColorBrush。
這個家伙比較“純”,當(dāng)然它不是裝純,的確很純,純到只用一種顏色,所以叫“單色畫刷”。
來,看看這個示例,我們畫一個矩形(放在一個Canvas中),然后用這個純家伙來打扮一下。
- <Rectangle Canvas.Left="5" Canvas.Top="130" Width="85" Height="75">
- <Rectangle.Fill>
- <SolidColorBrush Color="White"/>
- </Rectangle.Fill>
- </Rectangle>
因為內(nèi)置有轉(zhuǎn)換器,微軟一向是關(guān)心開發(fā)者的身體健康的,所以,MS不舍得我們寫代碼的時候過多勞累,所以,上面的內(nèi)容可以簡寫為。
- <Rectangle Canvas.Left="110" Canvas.Top="156"
- Width="120" Height="120" Fill="Blue"/>
這兩段代碼實現(xiàn)的效果是一樣的,很明顯,你會更喜歡后者,因為它簡練了N多。
接下來我們看看Color屬性有哪些表示方法。
1、名字,比如Blue,不用我翻譯了,明白了;
2、RGB,如#CCCCCC,如果你干過網(wǎng)頁設(shè)計,寫過CSS樣式,你懂的;
3、ARGB,如#0CBBBBBB,其實就是在前面加一個A值,0-1之間,透明度。
可以說,你記住了以上三點,你就可以寫出數(shù)不盡的顏色。
二、漸變畫刷。
如果你玩過像Photoshop這些繪圖軟件,或者你做過GDI編程,當(dāng)然你玩過WPF更好,簡直一模一樣。
漸變顏色,我們可以通俗地理解為:由N多種顏色組成,這些顏色有各自的分布主式,并且,在各段顏色之間都有一個過渡。
下面看看兩種漸變形式:線性和徑向。
(一)線性漸變
先看看下面的圖,相信沒有什么文字可以比圖片更直觀,相信你一看就知道何為線性漸變,只可意會啊。
好,上面的效果是如何實現(xiàn)的呢?用到這個類LinearGradientBrush??匆豢碭AML代碼。
- <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>
其中,我們要關(guān)注幾個地方:
1、StartPoint,線性漸變的起始點,既然是線性了,肯定有始有終的了,X和Y都在0和1之間;
2、EndPoint,結(jié)束點,同樣,值范圍在0-1之間,包含0和1.
3、0,0點在左上角,1,1點在右下角。
每個LinearGradientBrush都可以包含N個GradientStop,表示每種顏色的終點位置,如下圖所示。
如果你還不是很理解,最好的法子就是多練習(xí)。
- <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>
以上兩個例子的運(yùn)行效果如下圖所示。
(二)徑向漸變
名字不好理解,還是看圖寫作文吧。
怎么樣,美嗎?看看實現(xiàn)的XAML代碼吧。
- <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],橫軸和縱軸上的半徑。
可以發(fā)現(xiàn)這些值都是相對的邏輯值,這樣使用比絕對位置更靈活。
三、視頻畫刷VideoBrush。
這個要配合MediaElement一起使用,在前面的文章中已經(jīng)介紹過。
四、圖象畫刷ImageBrush。
如果你覺得前面的都是用顏色的,不夠爽,不妨看看這個,用圖片來填充。
實現(xiàn)的XAML如下。
- <Ellipse Canvas.Left="40" Canvas.Top="445" Width="398" Height="248">
- <Ellipse.Fill>
- <ImageBrush ImageSource="test.jpg"/>
- </Ellipse.Fill>
- </Ellipse>
這個就簡單了,ImageSource屬性就是指向一張圖片,使用方法與Image控件類似。