在 VB.Net 中,尝试为一条从左到右重复扫过 Picturebox 的垂直线设置动画

问题描述 投票:0回答:1

在 VB.Net 中,我有一个图片框,其中包含一个看起来像网格的图形图片。图片框中还有各种代码绘制的形状可供用户单击。我正在尝试找出一种方法,使图片框从上到下有一条垂直线,以预定的位置从左向右移动速度。我还需要能够确定线条何时穿过他被单击的形状。任何建议,将不胜感激。非常感谢。

我已经解决了提到的其他问题,并且可以用简单的代码在图片框中生成一条垂直线。但我坚持尝试为这条线制作动画。

vb.net animation graphics picturebox
1个回答
0
投票

这是一条从左向右移动并在完全通过后重新开始的垂直线示例:

Private lineX As Integer = 0

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    lineX += 5

    If lineX > PictureBox1.Width Then
        lineX = 0
    End If

    PictureBox1.Invalidate()
End Sub

Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
    e.Graphics.DrawLine(Pens.Black,
                        New Point(lineX, 0),
                        New Point(lineX, PictureBox1.Height))
End Sub

一般来说,最好计算控件上可能发生变化的最小区域,并在调用

Invalidate
时指定。
Paint
事件处理程序中的整个代码仍然会执行,但只有该区域内的像素会在屏幕上重新绘制,而最后一步是最慢的部分。不过我会把它作为练习留给你。您需要创建包含旧线和新线的最小
Rectangle
,以便重新绘制该区域,擦除旧线并绘制新线。当该行重置到左侧时,您可以使整个控件无效,或者可以调用
Invalidate
两次 - 一次用于右侧的旧行,一次用于左侧的新行。您可以根据需要多次调用
Invalidate
来重新绘制复杂区域。

© www.soinside.com 2019 - 2024. All rights reserved.