none
Blend を使った動作の適用範囲について RRS feed

  • 質問

  • Blendを使ったアニメーションの適用範囲について質問させてください。

    ストーリーボードを作って、「あるボタンを押すと、あるオブジェクトをふんわり表示させる」といったことができると思うのですが、自分自身のウィンドウ自体を閉じたり、最小化/最大化したりするときの動作も好きなようにカスタマイズできるのでしょうか?例えば、最小化させると、標準ではタスクバーへと吸い込まれていきますが、ぐるぐる螺旋を描きながら吸い込まれていったり etc.

    子ウィンドウを持つアプリケーションを作る上で、子ウィンドウが表示されるときの動作をカスタマイズできるのかなと思い、質問させていただきました。

    素人質問ですが、よろしくお願いいたします。

    2013年3月7日 7:06

回答

  • ウィンドウサイズや位置・透明度などであればストーリーボードでアニメーションさせることもできます。
    ただWindowコントロールはRenderTransformができないので、回転・拡大/縮小などはできません。

    とりあえずロード時に左から右へウィンドウが入ってくるサンプルを作ってみました。

    <Window x:Class="MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525" Left="-600"
            Name="window">
        
        <Window.Triggers>
            <EventTrigger RoutedEvent="Loaded">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetName="window" Storyboard.TargetProperty="Left" From="-600" To="100" Duration="0:0:0.5"/>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Window.Triggers>
        
        <Grid>
    
        </Grid>
    </Window>
    

    あるいはWindowStyle="None" Background="Transparent" AllowsTransparency="True"として、枠無しWindowの中に独自でレイアウトを作って擬似的にアニメーションさせるかですね。

    以上、参考まで。

    • 回答としてマーク m_tktn 2013年3月8日 5:11
    2013年3月7日 8:16

すべての返信

  • ウィンドウサイズや位置・透明度などであればストーリーボードでアニメーションさせることもできます。
    ただWindowコントロールはRenderTransformができないので、回転・拡大/縮小などはできません。

    とりあえずロード時に左から右へウィンドウが入ってくるサンプルを作ってみました。

    <Window x:Class="MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525" Left="-600"
            Name="window">
        
        <Window.Triggers>
            <EventTrigger RoutedEvent="Loaded">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetName="window" Storyboard.TargetProperty="Left" From="-600" To="100" Duration="0:0:0.5"/>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Window.Triggers>
        
        <Grid>
    
        </Grid>
    </Window>
    

    あるいはWindowStyle="None" Background="Transparent" AllowsTransparency="True"として、枠無しWindowの中に独自でレイアウトを作って擬似的にアニメーションさせるかですね。

    以上、参考まで。

    • 回答としてマーク m_tktn 2013年3月8日 5:11
    2013年3月7日 8:16
  • みっとさん

    ご説明、サンプルご提供ありがとうございます。

    とっても参考になりました!!

    2013年3月8日 5:12