位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > C# > 問(wèn)題詳情

C# 創(chuàng)建控件并設(shè)置樣式 — 動(dòng)畫(huà)

提問(wèn)人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-09

    動(dòng)畫(huà)是通過(guò)故事板創(chuàng)建的。毫無(wú)疑問(wèn),定義動(dòng)畫(huà)的最好方法就是使用Expression Blend這樣的設(shè)計(jì)器。不過(guò),也可以直接編輯XAML代碼來(lái)定義動(dòng)畫(huà),或通過(guò)C#代碼來(lái)定義。

    WPF中的動(dòng)畫(huà)使用Stoiyboard對(duì)象來(lái)定義。使用故事板可以以動(dòng)畫(huà)的方式來(lái)設(shè)置屬性值,例如,按鈕的背景色。需要知道,可以動(dòng)畫(huà)方式來(lái)處理任何屬性,而不只是影響控件顯示方式的屬性。

    可以在Resource Dictionaiy中獨(dú)立定義故事板,也可以在控件中使用事件觸發(fā)器的BeginStoryboard來(lái)定義。在故事板中可定義一個(gè)或多個(gè)動(dòng)畫(huà),也就是時(shí)間線。

    在上一節(jié)中,使用觸發(fā)器設(shè)置了鼠標(biāo)在控件上經(jīng)過(guò)時(shí)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控件包含兩個(gè)觸發(fā)器,分別用于MouseEnter和MouseLeave。每個(gè)觸發(fā)器都包含一個(gè)ColorAnimation,可分別將文本的前景色更改為黃色和黑色。使用Trigger直接設(shè)置Foreground屬性和使用故事 板進(jìn)行設(shè)置在細(xì)節(jié)上是不同的。使用故事板,所得到的是一種在1秒內(nèi)流暢完成的過(guò)渡,但若直接設(shè)置屬性,則過(guò)渡會(huì)瞬間發(fā)生。只要合理利用,兩者都是非常有用的工具——如果使用太多的動(dòng)畫(huà),會(huì)干擾用戶,但合理地設(shè)置動(dòng)畫(huà)可以使應(yīng)用程序看起來(lái)更加精彩。

繼續(xù)查找其他問(wèn)題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部