我正在尝试以编程方式实现将图像从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工作。 感谢。
答案 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();
希望这会有所帮助。
感谢