方法: 要素またはブラシの不透明度をアニメーション化する

フレームワーク要素のビューをフェードインおよびフェードアウトさせるには、その Opacity プロパティをアニメーション化するか、描画に使用する Brush (またはブラシ) の Opacity プロパティをアニメーション化します。 要素の不透明度をアニメーション化すると、要素とその子のビューがフェードインおよびフェードアウトしますが、要素を描画するために使用するブラシをアニメーション化すると、要素のどの部分をフェードさせるかをより細かく選択できるようになります。 たとえば、ボタンの背景を描画するために使用するブラシの不透明度をアニメーション化することができます。 これを行うと、ボタンの背景のビューがフェードインおよびフェードアウトして、テキストは完全に不透明のままになります。

注意

BrushOpacity をアニメーション化すると、要素の Opacity プロパティをアニメーション化するよりもパフォーマンスが向上します。

次の例では、2 つのボタンをアニメーション化して、それらのビューがフェードインおよびフェードアウトするようにします。 最初の Button の不透明度は、1.0 から 0.0 まで、5 秒間の Duration でアニメーション化されます。 2 番目のボタンもアニメーション化されますが、ボタン全体の不透明度ではなく、その Background を描画するために使用する SolidColorBrush の不透明度がアニメーション化されます。 この例を実行すると、最初のボタンのビューは完全にフェードインおよびフェードアウトしますが、2 番目のボタンは、背景のビューのみがフェードインおよびフェードアウトします。 テキストと枠線は、完全に不透明なままです。

<!-- OpacityAnimationExample.xaml
     This example shows how to animate the opacity of objects, 
     making them fade in and out of view. -->
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://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>

この例では、コードは省略されています。 完全なサンプルでは、LinearGradientBrush 内の Color の不透明度をアニメーション化する方法も示しています。 完全なサンプルについては、「Animating the Opacity of an Element Sample」 (要素サンプルの不透明度をアニメーション化する) を参照してください。