WPF樣式之畫刷結合樣式


第一種畫刷,漸變畫刷GradientBrush

(拿線性漸變畫刷LinearGradientBrush(其實它涵蓋在GradientBrush畫刷內。現在拿他來說事。),還有一個圓心漸變畫刷RadialgradientBrush,兩者用法相同):

我想象中的button的總體樣式大體結構應該如下:
<Style TargetType="Button">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Border x:Name="border">
                        <ContentPresenter/>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
那么看看這樣的button到底是什么樣子:
<Button Height="50" Width="150" Content="Button"/>
窗體的背景是灰色,button顯示如下:
可見,現在button的樣式是只顯示出里面content的內容,之前的那些特效全部消失。那么就看我們能不能給button樣式補充畫刷,讓他慢慢的改變形狀。
其中,border的background引用的是如下的一個畫刷:
這個畫刷應該算是最簡單的一個了,從上到下,用白色漸變到稍微有點的灰色。看看button的現在呈現,結果出現異常:
看起來,似乎是由於靜態引用導致的,現在將其改為動態的,修改樣式background為:
 Background="{DynamicResource NormalBrush}"
 
運行通過,button表現如下:
雖然button表達出來了我們定義的畫刷,看起來,也似乎是像點樣子了,但是button的content竟然在左上角,ok修改樣式展現層代碼如下:
 
<ContentPresenter Margin="2" HorizontalAlignment="Center" VerticalAlignment="Center"  RecognizesAccessKey="True"/>
看到最后這個RecognizesAccessKey屬性,我查了下msdn,上面是這樣說的,獲取或設置一個值  ContentPresenter 是否處於其樣式應當使用  AccessText 。事實上,說實話,我也沒怎么看懂。后來看了AccessText才知道,是對應用下划線起作用的,大概說明如下:
如果內容有多個下划線字符,因此,只有第一個轉換為  AccessKey;其他下划線顯示為常規文本。 如果要轉換為訪問鍵的下划線不是第一個下划線,對於前面一個要轉換的所有下划線請使用兩個連續的下划線。 例如,下面的代碼包含一個訪問鍵和顯示作為的 _HelloWorld:
上面也是msdn的內容。
這次button的content顯示已經變得正常了,顯示在了中央:
好的,接下來,我們還要對這個button應用一些其他的畫刷,首先,我們內容是被一個border包圍的,那么我們就看看這個border的borderbrush。更改style,添加一個borderbrush,在border的屬性里面加如下一句:
BorderBrush="Red",顯現出來的效果如下:
Soga,看到這,就明白這borderbrush是干什么的了,下面定義一個borderbrush如下:
這依舊是個線性畫刷,從上到下,由淺灰色過渡到淺黑色,引用:BorderBrush="{DynamicResource NormalBorderBrush}"
看效果吧:
看了上面,說一下線性畫刷:
其中線性畫刷有兩個必要的屬性:
StartPoint="0,0"EndPoint="1,1"
分別表示開始畫的點,和結束畫的點,左上角的點為0,0,右下角的點為1,1.兩個點的連線表示畫刷畫的方向。
如果上面的button從0,0畫到0,1,表示依靠Y軸從上到下畫線。
下面說說GradientStop的Offset屬性,這表示畫刷畫線方向的偏移。上面畫button我們只從上到下,漸變顏色。如果我們漸變的顏色不一樣,就可以有好幾個offset:例如修改代碼如下:
則button的表現如下(從淺白畫一半到紅,然后再從紅畫到淺黑。):
這樣一來,我們也就大概了解了這第一種畫刷的用法。
 
注意(MSDN):如果想要從水平漸變,則可以設置如下:若要創建水平線性漸變,請將 LinearGradientBrush 的  StartPoint 和  EndPoint 分別改為 (0,0.5) 和 (1,0.5)。
如果想要從垂直漸變:若要創建垂直線性漸變,請將 LinearGradientBrush 的  StartPoint 和  EndPoint 分別改為 (0.5,0) 和 (0.5,1)。
 

第二種畫刷,實心畫刷,也叫固體畫刷。SolidColorBrush

這第二種畫刷應該來說比較簡單,直接上代碼:
<SolidColorBrush x:Key="DisabledForegroundBrush" Color="Red" />
在上面的button里面用,改寫button的Style如下:
button的表現如下:
可見,前景色發生了變化。這大概就是實心畫刷的用法了。
 

第三種畫刷,就是所說的TileBrush了

不過,我們只拿ImageBrush來說事。(除此之外,還有Drawing畫刷和VisualBrush)
在上述style的基礎上增加代碼:
<ImageBrush x:Key="ButtonImageBrush" ImageSource="btnImage.png"/>
在Style里面引用:

 

button的表現,如下:

至此,畫刷的一些簡單的用法也就說完了。都是一些簡單的引用。下面貼出來一線碼農大神的畫刷結構圖:

如果想要知道更多關於畫刷的知識,一線碼農也可以幫助到您,一線文章索引:http://www.cnblogs.com/huangxincheng/archive/2012/07/14/2591941.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM