Bewegende Form?

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von der_Kurt.

    Bewegende Form?

    Hallo, ihr da draußen!

    Hätte mal eine "kurze" Frage:
    Ich hab ne Form auf FormBorderSyle = None und komplett durchsichtig gemacht

    VB.NET-Quellcode

    1. Public Class NervigeFliege
    2. Private Sub NervigeFliege_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. Me.BackColor = Color.Magenta
    4. Me.TransparencyKey = Color.Magenta
    5. End Sub
    6. End Class


    Dann hab ich ne GIF mit ner Fliege als PictureBox eingefügt.
    Nun soll sich die Form mit dem Fliegen GIF nur noch willkürlich über den Bildschirm bewegen.
    Das ganze soll nicht herumspringen sondern auf einfach nur so herumgleiten.

    Hoffentlich versteht ihr was ich mein

    Wie stell ich das an?

    BITTEDANKESCHÖN
    so:

    VB.NET-Quellcode

    1. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    2. Dim plomi As New Random
    3. Select Case plomi.Next(1, 3)
    4. Case 1
    5. Me.Location = New Point(Me.Location.X + 5, Me.Location.Y)
    6. Select Case plomi.Next(1, 3)
    7. Case 1
    8. Me.Location = New Point(Me.Location.X, Me.Location.Y + +5)
    9. Case Else
    10. Me.Location = New Point(Me.Location.X, Me.Location.Y - 5)
    11. End Select
    12. Case 2
    13. Me.Location = New Point(Me.Location.X - 5, Me.Location.Y)
    14. Select Case plomi.Next(1, 3)
    15. Case 1
    16. Me.Location = New Point(Me.Location.X, Me.Location.Y + +5)
    17. Case Else
    18. Me.Location = New Point(Me.Location.X, Me.Location.Y - 5)
    19. End Select
    20. End Select
    21. End Sub
    musst halt den Timer nach wunscheinsttellen (am besten 100)
    hab nochmal überarbeitet:

    VB.NET-Quellcode

    1. Dim plomi As New Random
    2. Dim geschwindigkeit As Integer = 3
    3. Select Case plomi.Next(1, 4)
    4. Case 1
    5. Select Case plomi.Next(1, 4)
    6. Case 1
    7. Me.Location = New Point(Me.Location.X, Me.Location.Y + geschwindigkeit)
    8. Select Case plomi.Next(1, 4)
    9. Case 1
    10. Me.Location = New Point(Me.Location.X + +geschwindigkeit, Me.Location.Y)
    11. Case 2
    12. Me.Location = New Point(Me.Location.X - geschwindigkeit, Me.Location.Y)
    13. Case Else
    14. End Select
    15. Case 2
    16. Me.Location = New Point(Me.Location.X, Me.Location.Y - geschwindigkeit)
    17. Select Case plomi.Next(1, 4)
    18. Case 1
    19. Me.Location = New Point(Me.Location.X + +geschwindigkeit, Me.Location.Y)
    20. Case 2
    21. Me.Location = New Point(Me.Location.X - geschwindigkeit, Me.Location.Y)
    22. Case Else
    23. End Select
    24. Case Else
    25. End Select
    26. Case 2
    27. Select Case plomi.Next(1, 4)
    28. Case 1
    29. Me.Location = New Point(Me.Location.X + geschwindigkeit, Me.Location.Y)
    30. Select Case plomi.Next(1, 4)
    31. Case 1
    32. Me.Location = New Point(Me.Location.X, Me.Location.Y + +geschwindigkeit)
    33. Case 2
    34. Me.Location = New Point(Me.Location.X, Me.Location.Y - geschwindigkeit)
    35. Case Else
    36. End Select
    37. Case 2
    38. Me.Location = New Point(Me.Location.X - geschwindigkeit, Me.Location.Y)
    39. Select Case plomi.Next(1, 4)
    40. Case 1
    41. Me.Location = New Point(Me.Location.X, Me.Location.Y + +geschwindigkeit)
    42. Case 2
    43. Me.Location = New Point(Me.Location.X, Me.Location.Y - geschwindigkeit)
    44. Case Else
    45. End Select
    46. Case Else
    47. End Select
    48. End Select
    49. End Sub
    Noch zu erledigen: Timer-Intervall optimieren, korrekten Bildschirmrand einfügen... ansonsten lauffähig.

    VB.NET-Quellcode

    1. Public Class Form1
    2. WithEvents t As New Windows.Forms.Timer
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. If t.Enabled Then Close() Else t.Start()
    5. End Sub
    6. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    7. t.Interval = 100
    8. End Sub
    9. Dim r_horiz As Integer = 40
    10. Dim r_vert As Integer = 20
    11. Public Sub t_tick() Handles t.Tick
    12. Dim r As New Random
    13. If r.Next(1, 11) > 6 Then 'in 4 von 10 Fällen
    14. Dim zahl = r.Next(25, 90)
    15. If r.Next(1, 10) Mod 2 = 0 Then 'nach Zufall
    16. r_horiz = If(r_horiz > 0, zahl, -zahl) 'den horizontalen Schritt variieren
    17. Else
    18. r_vert = If(r_vert > 0, zahl, -zahl) ' oder den Vertikalen
    19. End If
    20. End If
    21. Left = Left + r_horiz
    22. Top = Top + r_vert
    23. 'Wenn das Objekt über dem Rand ist, dann die Richtung einfach umkehren
    24. If Left < 0 OrElse Left > 300 Then r_horiz = -r_horiz
    25. If Top < 0 OrElse Top > 300 Then r_vert = -r_vert
    26. End Sub
    27. End Class