Заставить изображение не двигаться при создании другого

Я пытаюсь создать систему, похожую на пулю. Мне нужен графический блок, который будет создан при нажатии кнопки, а затем этот графический блок начнет двигаться вверх, но когда я нажму кнопку, графический блок перейдет из своего положения в начальное положение. код

------- вот мой полный код @ 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
Другие вопросы по тегам