【发布时间】:2021-05-13 12:41:00
【问题描述】:
我正在尝试在 VB 中创建一个简单的 winform 应用程序。我有一个表单,一个带有背景图像的图片框和一个按钮。当我按下按钮时,我希望图片框在表单中向左移动,直到它从左侧消失。然后我希望它重新出现在右侧并再次向左移动。
初始条件:
问题似乎是图片框超出表单边界的区域被删除了。所以第一次周围的图像很好地从表单的左侧滑出,并且永远不会回到右侧。或者更确切地说,它确实回来了,我只是看到它。
第二次滚动,图片框中超出表格边界的部分图像已被删除(左)或扭曲(右):
在下面的代码中,我故意更改了图片框的边界,以便我可以看到它实际上是在循环播放。但正如你在这张图片中看到的那样,图片框超出表单边界的部分要么被擦除,要么被扭曲。
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Do
PictureBox1.Left -= 1
Threading.Thread.Sleep(2)
If PictureBox1.Left <= -20 Then 'If PictureBox1.Left <= PictureBox1.Width Then
PictureBox1.Left = Me.Width - 40 'PictureBox1.Left = Me.Width
End If
Loop
End Sub
End Class
我已经在两台不同的计算机上同时使用 VS2019 和 VS2017 进行了尝试,并且发生了同样的事情。我也试过用文本框替换图片框,结果也差不多。
【问题讨论】:
-
睡眠会把事情锁起来。不要使用它。
-
不要那样做。使用 System.Windows.Forms.Timer 更改图片在其 Tick 事件中的位置。 Example
标签: vb.net image winforms picturebox