C# 如何使用动画绘制直线?
我想在C#Universal应用程序背后的代码中画一条线。我尝试使用Line类,但线条确实显示了,但我不知道如何制作动画,使线条看起来像是在屏幕中绘制的,而不是弹出,或者不是将其从屏幕外部转移到位置。我想看看动画画线从A点到B点。你知道我怎样才能做到这一点吗?谢谢C# 如何使用动画绘制直线?,c#,animation,storyboard,line,universal,C#,Animation,Storyboard,Line,Universal,我想在C#Universal应用程序背后的代码中画一条线。我尝试使用Line类,但线条确实显示了,但我不知道如何制作动画,使线条看起来像是在屏幕中绘制的,而不是弹出,或者不是将其从屏幕外部转移到位置。我想看看动画画线从A点到B点。你知道我怎样才能做到这一点吗?谢谢 如果有人能举个例子,我将不胜感激 我曾尝试遵循此co,但未成功您可以这样尝试: 简要说明: 有两点p1和p2。你可以把它们放在任何你喜欢的地方 持续时间是动画将花费的毫秒 步长是指绘制新线的毫秒数 计时器“tmr”执行动画工作
如果有人能举个例子,我将不胜感激
我曾尝试遵循此co,但未成功您可以这样尝试: 简要说明:
- 有两点p1和p2。你可以把它们放在任何你喜欢的地方
- 持续时间是动画将花费的毫秒
- 步长是指绘制新线的毫秒数
- 计时器“tmr”执行动画工作
- 增加步进计数器
- 沿直线计算新端点
- 划清界限 在最后一步中,使用p1到p2的不同颜色绘制线条
using System;
using System.Drawing;
using System.Windows.Forms;
namespace TestSO {
public partial class Form1 : Form {
public Form1() { }
PointF p1 = new PointF(10, 10);
PointF p2 = new PointF(170, 30);
float durationMS = 5000;
float stepMS = 100;
float stepWidthX;
float k;
float d;
private Timer tmr = new Timer();
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
stepWidthX = (p2.X-p1.X)/ (durationMS / stepMS);
k = (p2.Y - p1.Y) / (p2.X - p1.X);
d = (p2.X * p1.Y - p1.X * p2.Y) / (p2.X - p1.X);
tmr.Tick += tmr_Tick;
tmr.Interval = (int)stepMS;
tmr.Start();
}
private int stepCounter = 0;
void tmr_Tick(object sender, EventArgs e) {
stepCounter++;
float x = p1.X + stepCounter * stepWidthX;
float y = k * x + d;
this.CreateGraphics().DrawLine(Pens.Black, p1, new PointF(x, y));
if(stepCounter * stepMS > durationMS){
stepCounter = 0;
tmr.Stop();
this.CreateGraphics().DrawLine(Pens.Red, p1, p2);
}
}
}
}
@ĐầuTo,因为你是新来的,所以,请注意,这里给出答案的专业人士渴望获得声誉积分。如果你能投票选出有帮助的答案,那将是非常感谢的。如果一个答案帮助你解决了你的问题,你应该把它标记为被接受的答案,这将向其他人表明,这个问题已经解决了。谢谢!哦,对不起,你的帮助真的很有用。我试着投你的票。但是,因为我的声望低于15岁,所以我的选票没有显示出来。@Đầ乌托,没问题,请稍后再来,当你有足够的声望点数。如果这个答案解决了你的问题,你可能想接受它(投票柜台下面的支票)。这对我有好处(代表点),对其他人也有好处,正如他们所看到的,这个问题已经解决了。谢谢