C# 画两条线

C# 画两条线,c#,.net,winforms,animation,C#,.net,Winforms,Animation,如果我在一页上有两行 如何设置第一行的动画以到达第二行的位置 添加一个“计数器”变量,该变量将是线路在两个位置之间行驶距离的百分比。将其初始化为零,因为它从起始位置开始。添加一个计时器,每次它滴答作响时,您都会增加“计数器”并使客户端区域无效,以便重新绘制。一旦“计数器”达到100,它将100%到达目标,你就可以在不再需要时禁用计时器 在绘制例程中,您已经知道开始位置和结束位置,因此只需在两者之间的“计数器”百分比处绘制线。既然你知道startX和endX,你画的版本就是startX+((end

如果我在一页上有两行


如何设置第一行的动画以到达第二行的位置

添加一个“计数器”变量,该变量将是线路在两个位置之间行驶距离的百分比。将其初始化为零,因为它从起始位置开始。添加一个计时器,每次它滴答作响时,您都会增加“计数器”并使客户端区域无效,以便重新绘制。一旦“计数器”达到100,它将100%到达目标,你就可以在不再需要时禁用计时器


在绘制例程中,您已经知道开始位置和结束位置,因此只需在两者之间的“计数器”百分比处绘制线。既然你知道startX和endX,你画的版本就是startX+((endX-startX)/100*计数器)。对每一行的顶部、左侧、右侧和底部执行此操作,您就完成了。

如果我没有弄错,您有眨眼,这就是您的问题吗? 试试这个 小例子

System.Drawing.Graphics g = this.CreateGraphics();
    System.Drawing.BufferedGraphicsContext dc = new BufferedGraphicsContext();
    BufferedGraphics backbuffer = dc.Allocate(g, new Rectangle(new Point(0, 0), g.VisibleClipBounds.Size.ToSize()));
    backbuffer.Graphics.DrawLine(Pens.White, 10, 10, 10, 100);
    backbuffer.Render(g);

我编辑了我的问题。我想我可以比较w2和w,h2和h,直到它们都相等,然后停止。。。但是这不太管用。您是否能够扩展您的想法?将(w*(int)frame)替换为(w+((w2-w)*frame))您的MoveLine正在将frame增加0.02,但正在循环126次!因此,它将移动实际距离的2.52倍。使其循环50次,因为这将导致1.ahhh假警报的结束帧。当我这么做的时候,两条线都消失在深渊中:It’我不知道为什么会发生这种情况?嗯,修复了那个错误。。但它仍在继续离开页面。。。另外,到目的地线路的过渡非常阻塞……如果我弄错了,我会删除这个答案