如何使用动画绘制直线

本文关键字:绘制 动画 何使用 | 更新日期: 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);
            }
        }
    }
}