我想在C#Universal app后面的代码中画一条线。我尝试使用Line类并且该行确实显示,但我不知道如何制作动画,因此它看起来像是在屏幕上绘制线而不是弹出,或者不是从外部传输它屏幕到位置。我想看动画画从A点到B点的线。任何想法我怎么能做到这一点?谢谢!
如果有人可以提供一个这方面的例子,我将非常感激
我试图跟随此公司失败How do you animate a line on a canvas in C#?
答案 0 :(得分:1)
你可以这样试试:
简短说明:
我们需要计算每一步的宽度,线的角度“k”及其偏移量“d”。然后我们启动计时器。每个“Tick”都会这样做:
画线
在最后一步中,使用从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);
}
}
}
}