WPF实现射线效果动画

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值