110,556
社区成员
发帖
与我相关
我的任务
分享
double angle = Math.Atan2((map.PointY - postion.Y), (map.PointX - postion.X)) * 180 / Math.PI;
//设置旋转方向
RotateTransform rotate = new RotateTransform();
//绑定旋转中心
chess.RenderTransform = rotate;
//设置旋转中心百分比
chess.RenderTransformOrigin = new Point(0.5, 0.5);
Storyboard story = new Storyboard();
DoubleAnimation doubleAnimation = new DoubleAnimation(chess.Angle, angle, new Duration(TimeSpan.FromSeconds(100)));
Storyboard.SetTarget(doubleAnimation, chess);
Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("RenderTransform.Angle"));
story.Children.Add(doubleAnimation);
story.Begin();
chess.Dispatcher.Invoke(() =>
{
//设置旋转方向
RotateTransform rotate = new RotateTransform();
//绑定旋转中心
chess.RenderTransform = rotate;
//设置旋转中心百分比
chess.RenderTransformOrigin = new Point(0.5, 0.5);
//创建故事板
Storyboard story = new Storyboard();
//实例化一个Double类型的动画
DoubleAnimation doubleAnimation = new DoubleAnimation(chess.Angle, angle + 90, new Duration(TimeSpan.FromSeconds(FromMilliseconds / 5)));
//给动画指定对象
Storyboard.SetTarget(doubleAnimation, chess);
//给动画指定依赖的属性
Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Button.RenderTransform).(RotateTransform.Angle)"));
//将动画添加到动画板中
story.Children.Add(doubleAnimation);
//启动动画
story.Begin();
});
chess.Angle = angle;
对比原始:
//实例化一个Double类型的动画
DoubleAnimation doubleAnimation = new DoubleAnimation(chess.Angle, angle + 90, new Duration(TimeSpan.FromSeconds(FromMilliseconds / 5)));
//给动画指定依赖的属性
Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Button.RenderTransform).(RotateTransform.Angle)"));