0

我在画布中有一个 wpf 应用程序和图像。图像放置在 0,0 中。

我需要使图像从 0,0 移动到 500,200 并同时增长(我喜欢制作从远到近的效果)。

如果我这样做:

        TranslateTransform ttx = new TranslateTransform();
        TranslateTransform tty = new TranslateTransform();

        DoubleAnimationUsingKeyFrames dax = new DoubleAnimationUsingKeyFrames();
        dax.KeyFrames.Add(new LinearDoubleKeyFrame(500, KeyTime.FromTimeSpan(TimeSpan.FromSeconds(1))));

        DoubleAnimationUsingKeyFrames day = new DoubleAnimationUsingKeyFrames();
        day.KeyFrames.Add(new LinearDoubleKeyFrame(200, KeyTime.FromTimeSpan(TimeSpan.FromSeconds(1))));

        TransformGroup tg = new TransformGroup();
        tg.Children.Add(ttx);
        tg.Children.Add(tty);

        krug.RenderTransform = tg;

        ttx.BeginAnimation(TranslateTransform.XProperty, dax);
        tty.BeginAnimation(TranslateTransform.YProperty, day);

这很好用。它将图像“krug”从 0,0 转换为 500,200 动画。

但是,当我在翻译时添加用于缩放图像的逻辑时,如下所示:

        ScaleTransform zoom = new ScaleTransform();
        DoubleAnimationUsingKeyFrames zoomTimeline = new DoubleAnimationUsingKeyFrames();
        zoomTimeline.KeyFrames.Add(new LinearDoubleKeyFrame(2, KeyTime.FromTimeSpan(TimeSpan.FromSeconds(1))));
        tg.Children.Add(zoom);
        zoom.BeginAnimation(ScaleTransform.ScaleXProperty, zoomTimeline);
        zoom.BeginAnimation(ScaleTransform.ScaleYProperty, zoomTimeline);

然后图像不会停止到 500、200 而是更远。如果缩放因子越大,翻译越未来。如何控制动画在 500,200 处停止?

4

3 回答 3

1

组合缩放和平移变换时遇到的问题是它将从原点缩放平移变换(ScaleTransform.CenterX,ScaleTransform.CenterY)

例如,如果你想将它向右滑动 50,并将它的比例加倍,它实际上会移动 100 的净距离。

尝试为 ScaleTransform.CenterX 和 ScaleTransform.CenterY 设置动画以匹配您的平移变换。我相信这会让你随心所欲地进行扩展。

于 2013-01-24T13:17:16.880 回答
0

将动画放在单个情节提要中,并设置情节提要的持续时间以控制动画的长度。

然后开始故事板。

于 2011-10-02T09:14:04.717 回答
0

我找到了解决方案。我创建了仅执行 ScaleTransform 的单独用户控件。然后我在用户控件上应用 TranslateTransform。

于 2011-10-02T12:12:44.213 回答