Заставить изображение не двигаться при создании другого
Я пытаюсь создать систему, похожую на пулю. Мне нужен графический блок, который будет создан при нажатии кнопки, а затем этот графический блок начнет двигаться вверх, но когда я нажму кнопку, графический блок перейдет из своего положения в начальное положение. код
------- вот мой полный код @ visual vincent
Public Class Form1
Dim ind As New List(Of Integer)
Dim nums As ArrayList
Dim rnd As New Random
Dim add As Integer
Dim Particles As New List(Of PictureBox)
Dim dose As Integer
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For x = 0 To 100
Dim PBox As New PictureBox
Particles.Add(PBox)
Particles(x).Top = 600
Particles(x).Left = rnd.Next(20, 30)
Particles(x).BackColor = Color.Blue
Particles(x).Width = 2
Particles(x).Height = 2
Me.Controls.Add(Particles(index))
Next
Timer1.Start()
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
add += 1
Particles.Item(add).Top -= rnd.Next(4)
If add >= 99 Then
add = 1
End If
End Sub
конец класса
-
---- просто вставьте его против
я бы хотел, чтобы все они двигались одновременно
1 ответ
Одним из способов является использование списка:
Тусклые частицы как новый список (PictureBox).
Как ответ на ваш комментарий:
Я считаю, что это должно сработать, но я не уверен на 100%.
Сначала объявите список в вашем классе формы:
Dim Particles As New List(Of PictureBox) From {New PictureBox, New PictureBox, New PictureBox} 'Three particles
Затем установите их свойства (т.е. в Form1_Load):
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'(0) is the index of your first particle. They usually start at 0 and goes up.
Particles(0).BackColor = Color.Black
Particles(0).Top = 600
Particles(0).Left = 10
Particles(0).Width = 6
Particles(0).Height = 6
Particles(0).Visible = True
Particles(1).BackColor = <your color>
Particles(1).Top = <your top>
Particles(1).Left = <your left>
Particles(1).Width = <your width>
Particles(1).Height = <your height>
Particles(1).Visible = True
Particles(2).BackColor = <your color>
Particles(2).Top = <your top>
Particles(2).Left = <your left>
Particles(2).Width = <your width>
Particles(2).Height = <your height>
Particles(2).Visible = True
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Controls.Add(Particles(0))
Particles(0).Top = 600
Controls.Add(Particles(1))
Particles(1).Top = <your top>
Controls.Add(Particles(2))
Particles(2).Top = <your top>
Timer1.Start()
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Particles(0).Top -= 3
Particles(1).Top -= <your value>
Particles(2).Top -= <your value>
End Sub
Или просто переместите Частицы (1) и / или Частицы (2) в новый таймер, если вы хотите, чтобы он запускался раньше, шел быстрее и т. Д.
Чтобы добавить 100 частиц, поместите этот цикл For сверху в Form1_Load:
Dim Particles As New List(Of PictureBox)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For x = 1 To 100
Dim PBox As New PictureBox
Particles.Add(PBox)
Next
End Sub
В таймере выполните:
For x = 0 To 100
Particles.Item(x).Top -= rnd.Next(4)
Next