您的位置:首页 > 其它

WPF实现射线效果动画

2014-10-26 12:10 676 查看
最近的一个项目中有个需求是:从一个点向其它多个点发出射线,要求这些射线同时发出,同时到达。

我就想到了用WPF的动画来实现。WPF中有Line类用于绘制直线,但这个类中好像没有这样的方法能直接满足需求,只能自己写一个方法(我对WPF也只是刚入门,不确定是否有这样的方法)。

射线可以看作一个起点不变而终点一直在变化的直线,所以可以用WPF中的线性插值动画来动态改变终点坐标。

public void RayAnimation(Point from, Point to)
{
Storyboard myStoryBoard = new Storyboard();
Line myLine = new Line();
myLine.Stroke = Brushes.Red;
myLine.StrokeThickness = 3;
myLine.X1 = from.X;   //必须要设置Line的起点X1,Y1,X2,Y2则不需要设置
myLine.Y1 = from.Y;
Canvas1.Children.Add(myLine);   //添加到Canvas1中
DoubleAnimation animationX = new DoubleAnimation();   //两个动画,分别负责myLine.X2和myLine.Y2的变化
DoubleAnimation animationY = new DoubleAnimation();
animationX.Duration = TimeSpan.FromMilliseconds(3000);
animationY.Duration = TimeSpan.FromMilliseconds(3000);
animationX.From = from.X;
animationX.To = to.X;
animationY.From = from.Y;
animationY.To = to.Y;
Storyboard.SetTarget(animationX, myLine);   //设置Animation的目标
Storyboard.SetTarget(animationY, myLine);
Storyboard.SetTargetProperty(daX, new System.Windows.PropertyPath("(Line.X2)"));  //指定目标的属性
Storyboard.SetTargetProperty(daY, new System.Windows.PropertyPath("(Line.Y2)"));
myStoryBoard.Children.Add(animationX);   //添加到StoryBoard中
myStoryBoard.Children.Add(animationY);
myStoryBoard.Begin();   //开始动画
}

关于WPF动画的内容,有篇文章感觉很不错
http://www.cnblogs.com/libaoheng/archive/2012/04/23/2466242.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  wpf 动画 射线