我希望图片框每秒钟向右移动一个位置



以下是我尝试实现更改图片框位置的代码的地方,但它似乎不起作用,我希望图片向右移动:

Public Class Form1
Dim mypicturebox As New PictureBox
Dim randval As Integer
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Label1.Text = "hello " & TextBox1.Text
Timer1.Enabled = True
End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
Timer1.Interval = 2000
Timer1.Enabled = True
mypicturebox.Location = New Point(mypicturebox.Location.X + 5, mypicturebox.Location.Y + 5)
End Sub
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Timer1.Tick
Label1.Font = New Font(Label1.Font.FontFamily, Label1.Font.Size + 
mypicturebox.Location = New Point(mypicturebox.Location.X + 5, mypicturebox.Location.Y)
End Sub  
End Class

您当前的Timer处理程序-如果Timer实际正在启动-只会在每个Timer周期向右偏移5倍的PictureBox。

如果你想要一个随机的位置,你需要一种方法来获得一个随机数。Random是您的最佳选择。

您还需要确保生成的随机位置是"0";有效的";对于屏幕的大小和PictureBox的大小,否则PictureBox可能完全不可见(屏幕外(或部分可见。

以下是一些基本代码,可以获得-100到100之间的两个随机数,让你开始:

Dim myRand As Random = New Random(Now.Second)
Dim newX As Integer = myRand.Next(-100, 100)
Dim newY As Integer = myRand.Next(-100, 100)

(Now.SecondmyRandom的生成进行种子化,以便每次生成不同的起始编号。(

然后你可以使用这些作为你的PictureBox定位点:

mypicturebox.Location = New Point(newX, newY)

限制你的位置,你应该得到你想要的。

更新

好吧,当你改变了你的需求描述时,放弃所有这些。。。

只要在你的X位置上添加你需要的任何偏移量,你就完成了,前提是你的计时器正在启动。你仍然需要注意你的屏幕限制。

相关内容

最新更新