Rodhos Soft

備忘録を兼ねた技術的なメモです。Rofhos SoftではiOSアプリ開発を中心としてAndroid, Webサービス等の開発を承っております。まずはご相談下さい。

アニメーション

こちらを参考にして作ってみた。

コントロールにアニメーションを追加する その1(WP7) | Tech Booster

ボタンが押すと色が変わるようにしたい。まず、ボタンを用意する。アクア色にした。

        <Button Content="Button"  Click="Button_Click">
            <Button.Background>
                <SolidColorBrush x:Name="myButtonColor" Color="Aqua"/>
            </Button.Background>
        </Button>

これに色の変化アニメーションをつける。

        <Button Content="Button"  Click="Button_Click">
            <Button.Background>
                <SolidColorBrush x:Name="myButtonColor" Color="Aqua"/>
            </Button.Background>
            <Button.Resources>
            <Storyboard x:Name="myStoryBoard">
            <ColorAnimation Storyboard.TargetName="myButtonColor"
                            Storyboard.TargetProperty="Color"
                            Duration="0:0:4" From="Aqua" To="Blue"/>                    
            </Storyboard>
            </Button.Resources>

        </Button>

あとは、ボタンが押された際に呼び出せばよい。

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            this.myStoryBoard.Begin();
        }


次にボタンが下に動くというのをやってみる。

        <Button x:Name="myButton" Content="Button" HorizontalAlignment="Left" Margin="199,534,0,0" Click="myButton_Click">
            <Button.RenderTransform>
                <TranslateTransform x:Name="ButtonPosition" X="0" Y="0" />
            </Button.RenderTransform>
        </Button>

このように変換する部分ButtonPositionを用意してやり

        <Button x:Name="myButton" Click="myButton_Click">
            <Button.RenderTransform>
                <TranslateTransform x:Name="ButtonPosition" X="0" Y="0" />
            </Button.RenderTransform>
            
            <Button.Resources>
                <Storyboard x:Name="myStoryBoardMove">                    
                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="ButtonPosition"
                                                   Storyboard.TargetProperty="Y">
                        <EasingDoubleKeyFrame x:Name="startY" KeyTime="0" Value="0"/>                       
                        <EasingDoubleKeyFrame x:Name="endY" KeyTime="0:0:2" Value="50"/>
                    </DoubleAnimationUsingKeyFrames>
                </Storyboard>
            </Button.Resources>
        </Button>

のように、DoublueAnimationKeyFrameで動かす。

実行は

        private void myButton_Click(object sender, RoutedEventArgs e)
        {
            this.myStoryBoardMove.Begin();
        }