0

ストーリーボード API で C# アニメーションを使用してアニメーションを開発したいと考えています。アニメーションの目的は、キャンバスを用意することです。このキャンバス内に、いくつかの特定のロジックに基づいて、実行時にさまざまな画像を配置します。ただし、当分の間、このキャンバスを退屈なUIのままにしたくないので、ゲームが実行されている限り、永遠に再生されるある種のアニメーションを実行したいと考えています. それをしてもいいですか?

<Canvas x:Name="GameCanvas" Height="480" Width="480" Background="white" VerticalAlignment="Top" Loaded="GameCanvas_Loaded" >
            <Canvas.Resources>
                <Storyboard x:Name="myStoryboard">
            </Canvas.Resources>
            <Image x:Name="PreviewImage" Height="480" Width="480" Opacity="1" RenderTransformOrigin="0.2,0.5" >
                <Image.RenderTransform>
                    <TransformGroup>
                        <RotateTransform x:Name="AnimatedRotateTransform" Angle="0" />
                        <CompositeTransform x:Name="TransRotate" />
                    </TransformGroup>
                </Image.RenderTransform>
            </Image>
        </Canvas>

はいの場合、誰でもそれを開始する方法を案内するのを手伝ってください。キャンバスの中に、永遠に実行されるある種のアニメーションを入れたいです。たとえば、いくつかのカラフルなボタンを配置すると、このボタンがキャンバス内である位置から別の位置に移動します。

4

2 に答える 2

1

アニメーションについて読む必要があります。 http://www.microsoft.com/en-us/download/details.aspx?id=24519をお勧めします 。何かをアニメーション化する場合: 最初にストーリーボードを定義し、オブジェクトのプロパティにアニメーションを追加します (ダブル アニメーション、キー フレームを使用したダブル アニメーション、オブジェクト アニメーション、カラー アニメーションなど)。次に、キー フレームを追加し、コードでアニメーションを実行するか、トリガーを使用します。

<Rectangle Fill="Azure" Height="50" Width="50" Name="Rect1">
    <Rectangle.Resources>
        <Storyboard x:Key="Animation" >
            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="Transform"
                                    Storyboard.TargetProperty="X"
                                    RepeatBehavior="Forever"
                                    AutoReverse="True"        >

                <LinearDoubleKeyFrame KeyTime="0:0:02" Value="100" />
                <LinearDoubleKeyFrame KeyTime="0:0:02" Value="0"   />
            </DoubleAnimationUsingKeyFrames>
            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="Transform"
                                    Storyboard.TargetProperty="Y"
                                    RepeatBehavior="Forever"
                                            AutoReverse="True">

                <LinearDoubleKeyFrame KeyTime="0:0:01" Value="100" />
                <LinearDoubleKeyFrame KeyTime="0:0:01" Value="0"   />
            </DoubleAnimationUsingKeyFrames>
        </Storyboard>
    </Rectangle.Resources>
    <Rectangle.RenderTransform>
        <TranslateTransform x:Name="Transform"/>
    </Rectangle.RenderTransform>
</Rectangle>

//in code behind
(Rect1.Resources["Animation"] as Storyboard).Begin();

上記のコードは、四角形を開始点から 100 までゆっくりと移動させ、0 に戻すというように永遠に続きます。

//更新 - コード編集

で、よくわかれば何か浮いてほしい。Y と X のプロパティをアニメーション化するだけで、Y は X よりも速く、スプライン フレームまたはイージング フレームを使用して、このアニメーションをカスタマイズできます。

于 2013-10-30T08:58:48.963 に答える
0

開発に C++/CX コードを使用する場合、この方法でアニメーションを実行できます。

Storyboard^ rect = safe_cast<Storyboard^>(Rect1->Resources->Lookup("Animation"));
rect->Begin();
于 2015-04-16T19:53:06.273 に答える