在 VB.Net 中,我有一个图片框,其中包含一个看起来像网格的图形图片。图片框中还有各种代码绘制的形状可供用户单击。我正在尝试找出一种方法,使图片框从上到下有一条垂直线,以预定的位置从左向右移动速度。我还需要能够确定线条何时穿过他被单击的形状。任何建议,将不胜感激。非常感谢。
我已经解决了提到的其他问题,并且可以用简单的代码在图片框中生成一条垂直线。但我坚持尝试为这条线制作动画。
这是一条从左向右移动并在完全通过后重新开始的垂直线示例:
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
来重新绘制复杂区域。