ストーリーボードをC#で手書きすると


DoubleAnimationUsingKeyFrames をコードで書くと、次のように面倒なことになるので、XAMLで書いて、トリガーで起動するようにしたほうがいい。とはいえ、動的にストーリーボードやトリガーをエディタで設定しておいて、それをC#で書き直すときに、デザイナーが処理できるように気をつかってあげないと、デザイナーが表示できなくなる。

private void StoryBoardScale(Storyboard sb, Label label)
{
    DoubleAnimationUsingKeyFrames daukfX = new DoubleAnimationUsingKeyFrames();
    DoubleAnimationUsingKeyFrames daukfY = new DoubleAnimationUsingKeyFrames();

    ScaleTransform scaleTransform = new ScaleTransform();
    label.RenderTransform = scaleTransform;
    string name = "labelS" + num++;
    this.RegisterName(name, scaleTransform);

    daukfX.BeginTime = new TimeSpan(0, 0, 0);
    daukfX.Duration = new TimeSpan(0, 0, 60);
    daukfX.KeyFrames.Add(
         new SplineDoubleKeyFrame(
             0.1,
             KeyTime.FromTimeSpan(new TimeSpan(0, 0, 0))));
    daukfX.KeyFrames.Add(
        new SplineDoubleKeyFrame(
            5.0,
            KeyTime.FromTimeSpan(new TimeSpan(0, 0, 60))));

    Storyboard.SetTargetName(daukfX, name);
    Storyboard.SetTargetProperty(daukfX, new PropertyPath(ScaleTransform.ScaleXProperty));

    sb.Children.Add(daukfX);

    daukfY.BeginTime = new TimeSpan(0, 0, 0);
    daukfY.Duration = new TimeSpan(0, 0, 30);
    daukfY.KeyFrames.Add(
         new SplineDoubleKeyFrame(
             0.1,
             KeyTime.FromTimeSpan(new TimeSpan(0, 0, 0))));
    daukfY.KeyFrames.Add(
        new SplineDoubleKeyFrame(
            5.0,
            KeyTime.FromTimeSpan(new TimeSpan(0, 0, 60))));

    Storyboard.SetTargetName(daukfY, name);
    Storyboard.SetTargetProperty(daukfY, new PropertyPath(ScaleTransform.ScaleYProperty));

    sb.Children.Add(daukfY);
}

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中


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