Поделиться через


Практическое руководство. Анимация свойства "Прозрачность" элемента или кисти

Обновлен: Ноябрь 2007

Чтобы создать эффект проявления и исчезновения элемента Framework, можно анимировать его свойство Opacity, или анимировать свойство Opacity использующейся для его рисования кисти Brush (или нескольких кистей). Анимация свойства прозрачности элемента создает эффект появления и исчезновения для него и его потомков, но анимация кисти используется для рисования элемента с лучшим выделением, в зависимости от того, какая часть элемента постепенно изменяется. Например, можно анимировать свойство «Прозрачность» элемента «Кисть», использующегося для рисования фона кнопки. Это вызовет эффект проявления и исчезновения фона кнопки, в то время как текст кнопки будет оставаться полностью непрозрачным.

ms746779.alert_note(ru-ru,VS.90).gifПримечание.

Анимация OpacityBrush имеет большую производительность, чем анимация свойства Opacity элемента.

В следующем примере создается эффект проявления и исчезновения для двух кнопок. Свойство «Прозрачность» первой Button анимируется от 1.0 до 0.0 с Duration в пять секунд. Вторая кнопка также анимирована, но свойство «Прозрачность» элемента SolidColorBrush используется для рисования только ее фона Background, поэтому анимируется фон, а не вся кнопка. Во время выполнения примера первая кнопка проявляется и исчезает вся, а во второй кнопке проявляется и исчезает только фон. Текст и границы второй кнопки остаются полностью непрозрачными.

Пример

<!-- OpacityAnimationExample.xaml
     This example shows how to animate the opacity of objects, 
     making them fade in and out of view. -->
<Page xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
  WindowTitle="Opacity Animation Example" Background="White">
  <StackPanel Margin="20">

    <!-- Clicking this button animates its opacity. -->
    <Button Name="opacityAnimatedButton">
      A Button
      <Button.Triggers>
        <EventTrigger RoutedEvent="Button.Click">
          <BeginStoryboard>
            <Storyboard>
              <DoubleAnimation 
                Storyboard.TargetName="opacityAnimatedButton"
                Storyboard.TargetProperty="(Button.Opacity)" 
                From="1" To="0" Duration="0:0:5" AutoReverse="True"  /> 
            </Storyboard>
          </BeginStoryboard>
        </EventTrigger>
      </Button.Triggers>
    </Button>

    <!-- Clicking this button animates the opacity of the brush
         used to paint its background. -->
    <Button>
      A Button
      <Button.Background>
        <SolidColorBrush x:Name="MyAnimatedBrush" Color="Orange" />
      </Button.Background>
      <Button.Triggers>
        <EventTrigger RoutedEvent="Button.Click">
          <BeginStoryboard>
            <Storyboard>
              <DoubleAnimation 
                Storyboard.TargetName="MyAnimatedBrush"
                Storyboard.TargetProperty="(Brush.Opacity)" 
                From="1" To="0" Duration="0:0:5" AutoReverse="True"  />  
            </Storyboard>
          </BeginStoryboard>
        </EventTrigger>
      </Button.Triggers>         
    </Button>
  </StackPanel>
</Page>

В этот пример не включен код. Полный пример также показывает, как анимировать прозрачность Color внутри LinearGradientBrush. Полный пример см. в разделе Пример анимации свойства Opacity элемента.