C# 創(chuàng)建控件并設置樣式 — 動畫
動畫是通過故事板創(chuàng)建的。毫無疑問,定義動畫的最好方法就是使用Expression Blend這樣的設計器。不過,也可以直接編輯XAML代碼來定義動畫,或通過C#代碼來定義。
WPF中的動畫使用Stoiyboard對象來定義。使用故事板可以以動畫的方式來設置屬性值,例如,按鈕的背景色。需要知道,可以動畫方式來處理任何屬性,而不只是影響控件顯示方式的屬性。
可以在Resource Dictionaiy中獨立定義故事板,也可以在控件中使用事件觸發(fā)器的BeginStoryboard來定義。在故事板中可定義一個或多個動畫,也就是時間線。
在上一節(jié)中,使用觸發(fā)器設置了鼠標在控件上經過時Button控件的前景色。分析下面的代碼,這里使用的是故事板:
<Button Content="Animation" HorizontalAlignment="Left" Margin="197, 63, 0, 0"
VerticalAlignmentWTop" Width="75">
<Button.Triggers>
<EventTrigger RoutedEvent="Button.MouseEnter">
<BeginStoryboard>
<Storyboard>
<ColorAnimation To=,,Yellow'1
Storyboard.TargetProperty=H(Button.Foreground)
.(SolidColorBrush?Color)"
FillBehavior="HoldEnd"
Duration="0:0:1" AutoReverse="False" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent=11 Button."ouseLeave">
<BeginStoryboard>
<Storyboard>
<ColorAnimation To="Black"
Storyboard.TargetProperty="(Button.Foreground)
.(SolidColorBrush.Color)"
FillBehavior="HoldEnd"
Duration="0:0:l"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers〉
</Button>
Button控件包含兩個觸發(fā)器,分別用于MouseEnter和MouseLeave。每個觸發(fā)器都包含一個ColorAnimation,可分別將文本的前景色更改為黃色和黑色。使用Trigger直接設置Foreground屬性和使用故事 板進行設置在細節(jié)上是不同的。使用故事板,所得到的是一種在1秒內流暢完成的過渡,但若直接設置屬性,則過渡會瞬間發(fā)生。只要合理利用,兩者都是非常有用的工具——如果使用太多的動畫,會干擾用戶,但合理地設置動畫可以使應用程序看起來更加精彩。
點擊加載更多評論>>