如何使用动画绘制直线
本文关键字:绘制 动画 何使用 | 更新日期: 2023-09-27 18:20:21
我想在C#通用应用程序后面的代码中画一条线。我试着使用Line类,线确实会显示出来,但我不知道如何制作动画,所以它看起来像是在屏幕上画的线,而不是弹出,或者不是将它从屏幕外转移到该位置。我想看动画画出从A点到B点的线。你知道我该如何做到这一点吗?谢谢
如果有人能提供一个这样的例子,我将不胜感激
我尝试过跟随这个合作,但没有成功。你如何在C#中动画画布上的一行?
您可以这样尝试:
简要说明:
- 有两个点p1和p2。你可以把它们放在任何你喜欢的地方
- 持续时间MS是动画将花费的毫秒
- 步长MS是绘制一条新线的频率(毫秒)
- 计时器";tmr";动画效果好吗
我们需要计算每个台阶的宽度;k〃;线的偏移量";d";。然后我们启动计时器。每个";勾选";也会这样做:
-
增加步进计数器
-
计算沿线的新端点
-
绘制
在最后一步中,用从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);
}
}
}
}