WPF实现射线效果动画

来源:互联网 发布:淘宝2017官方版下载 编辑:程序博客网 时间:2024/06/05 23:03

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

我就想到了用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

0 0
原创粉丝点击