Windows Phone:使用PointAnimation将图像从A点动画到B

时间:2014-01-15 06:29:19

标签: windows-phone-7 animation windows-phone-8 windows-phone

我正在尝试以编程方式实现将图像从A点转换到Windows Phone上的屏幕中心。我尝试了很多不同的方法,这是我最新方法的代码(它不起作用):

        var trans = new TranslateTransform() {
            X = 1.0,
            Y = 1.0
        };
        img.RenderTransformOrigin = new Point(0.5, 0.5);
        img.RenderTransform = trans;

        var moveAnim = new PointAnimation();
        moveAnim.Duration = TimeSpan.FromMilliseconds(1000);
        moveAnim.From = new Point((double)originalPosition[0],(double)originalPosition[1]);
        moveAnim.To = new Point(centerX, centerY);


        Storyboard.SetTarget(moveAnim, img);
        Storyboard.SetTargetProperty(moveAnim, new PropertyPath("(UIElement.RenderTransform).(TranslateTransform.X).(TranslateTransform.Y)"));

        storyboard.Children.Add(moveAnim);
        storyboard.Begin();

我对使用什么作为PointAnimation的TargetProperty感到困惑!我在使用Double Animation时使用了TranslateTransform.X或Y.我知道我可以使用2个DoubleAnimations来实现这个目标,但我想知道如何让PointAnimation工作。 感谢。

2 个答案:

答案 0 :(得分:0)

这就是我如何在cs中制作动画 制作一个全局故事板对象

Storyboard sb = new Storyboard();

然后制作这样的故事板。

Duration duration = new Duration(TimeSpan.FromSeconds(0.2));

            // Create two DoubleAnimations and set their properties.
            DoubleAnimation myDoubleAnimation1 = new DoubleAnimation();
            DoubleAnimation myDoubleAnimation2 = new DoubleAnimation();

            myDoubleAnimation1.Duration = duration;
            myDoubleAnimation2.Duration = duration;

            sb = new Storyboard();
            sb.Duration = duration;

            sb.Children.Add(myDoubleAnimation1);
            sb.Children.Add(myDoubleAnimation2);

            Storyboard.SetTarget(myDoubleAnimation1, image);
            Storyboard.SetTarget(myDoubleAnimation2, image);
            PropertyPath p1=new PropertyPath("(UIElement.RenderTransform).(CompositeTransform.TranslateX)");
             PropertyPath p2=new PropertyPath("(UIElement.RenderTransform).(CompositeTransform.TranslateY)");
            // Set the attached properties of Canvas.Left and Canvas.Top
            // to be the target properties of the two respective DoubleAnimations
             Storyboard.SetTargetProperty(myDoubleAnimation1, p1);
             Storyboard.SetTargetProperty(myDoubleAnimation2, p2);

            myDoubleAnimation1.To = 0;
            myDoubleAnimation2.To = 200;
            LayoutRoot.Resources.Add("ab", sb);

最后启动动画的代码

 private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            sb.Begin();
        }

对图像进行更改

image=new Image();
CompositeTransform ct=new CompositeTransform ();
image.RenderTransform=ct;

希望它有所帮助。

答案 1 :(得分:0)

试试这段代码。

Image img = new Image();
img.Name = "img";
img.RenderTransform = new CompositeTransform();

Storyboard moveSb = new Storyboard();
TranslateTransform moveTransform = new TranslateTransform();
img.RenderTransform = moveTransform;
Duration duration = new Duration(TimeSpan.FromSeconds(2));
DoubleAnimation myDoubleAnimationX = new DoubleAnimation();
myDoubleAnimationX.Duration = duration;
myDoubleAnimationX.To = 200;
moveSb.Children.Add(myDoubleAnimationX);
Storyboard.SetTarget(myDoubleAnimationX, moveTransform);
Storyboard.SetTargetProperty(myDoubleAnimationX, "X");
moveSb.Begin();

希望这会有所帮助。
感谢