Path を回す


環境: Windows Phone 7

デザイナーでアニメーションを設定するのは簡単ですが、固定パターンしかアニメーションを設定できません。動的にアニメーションを作成するには、次のような方法でオブジェクトにアニメーションを設定して、ストーリーボードを再生する必要があります。この時、試行錯誤をしたので、その時のメモです。

ポイント1:
SetTarget で、CompositeTransform に名前を付けて、それに対して、アニメーションのターゲットを設定します。
この時、SetTargetName(daukf1, “ct”);
のように名前で指定しようとすると、InvalidOperationalException、”Cannot resolve TargetName ct” という例外が発生して、うまくいきません。SetTarget(daukf1, ct) で直接指定するとうまくいきます。指定方法が悪いのか、原因は不明です。

ポイント2:
SetTargetPropert で、 ターゲットプロパティに new PropertyPath(CompositeTransform.RotationProperty) を設定します。

<Path x:Name="path" Data="M178,173 L231,109 C231,109 278,143 279,146 C280,149 276,221 272,222 C268,223 203.00009,247 192.00006,245 C181.00002,243 178,173 178,173 z" Fill="Blue" Height="100" Stretch="Fill" Stroke="Red" RenderTransformOrigin="0.5,0.5"  Width="100">
    <Path.RenderTransform>
        <CompositeTransform x:Name="ct"/>
    </Path.RenderTransform>
</Path>

Storyboard sb1 = new Storyboard();

DoubleAnimationUsingKeyFrames daukf1 = new DoubleAnimationUsingKeyFrames();

EasingDoubleKeyFrame ldkf1 = new EasingDoubleKeyFrame();
ldkf1.KeyTime = KeyTime.FromTimeSpan(new TimeSpan(0, 0, 0));
ldkf1.Value = 0;
EasingDoubleKeyFrame ldkf2 = new EasingDoubleKeyFrame();
ldkf2.KeyTime = KeyTime.FromTimeSpan(new TimeSpan(0, 0, 1));
ldkf2.Value = 100;

daukf1.KeyFrames.Add(ldkf1);
daukf1.KeyFrames.Add(ldkf2);

Storyboard.SetTarget(daukf1, ct);
Storyboard.SetTargetProperty(daukf1, new PropertyPath(CompositeTransform.RotationProperty));

sb1.Children.Add(daukf1);
sb1.Begin();

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中


%d人のブロガーが「いいね」をつけました。