Bild bewegen

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Wulf.

    Bild bewegen

    Hallo!

    Ich bin VB-Anfänger und hab 2 Fragen!
    1.Wie krieg ich dass hin, dass wenn z.B. die linke Pfeiltaste drücke, sich die PictureBox bewegt und bei jedem drücken sich das Bild verändert?
    Dass sich die PictureBox bewegt müsste doch eig. so gehen oder?

    VB.NET-Quellcode

    1. PictureBox1.Location = New Point(PictureBox1.Location.X - 1, PictureBox1.Location.Y)

    Und was muss ich jetzt noch davor schreiben damit das passiert wenn ich die linke Pfeiltaste drücke?
    2.Wenn die PictureBox sich bewegt sollen bestimmte Stellen blockiert sein wo das Bild sozusagen gegenläuft und stehen bleibt. Wie geht das?

    Danke im vorraus,

    VinFreak ;)
    es gibt dafür das KeyDown Event, mit e.KeyCode und If kannst du auf die einzelnen Tasten der Tastatur überprüfen und entsprechenden Code ausführen...
    2. ein zweites If einbauen mit welchem du überprüfst, ob etwas Kollidiert->(evtl. solltest du alles mit GDI+ zeichnen, wenn es etwas wie ein Spiel werden soll...)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    zum 1:

    VB.NET-Quellcode

    1. Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    2. If e.KeyCode = Keys.Left Then
    3. PictureBox1.left = PictureBox1.left + 1
    4. End If
    5. End Sub

    mfg

    Soviel ich weiß!

    Also du must bei Form1.Load hinschreiben

    VB.NET-Quellcode

    1. Me.KeyPreview = True

    Für das Bewegen gilt dann das:

    VB.NET-Quellcode

    1. Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    2. If e.KeyCode = Keys.A Then
    3. PictureBox1.Left -= 3
    4. End If
    5. If e.KeyCode = Keys.D Then
    6. PictureBox1.Left += 3
    7. End If
    8. If e.KeyCode = Keys.S Then
    9. PictureBox1.Top +=3
    10. End If
    11. If e.KeyCode = Keys.W Then
    12. PictureBox1.Top -=3
    13. End If
    14. End Sub


    Das is die Kontrolle für wasd! Das hilft dich hoffentlich!
    Und für das Bild ändern musst du mit ressourcen arbeiten und am besten in einem Timer mit ein paar if-zeilen arbeiten!
    Das weiß ich!





    P.S: Ein bisschen spät^^ Aber hoffe ich konnte trotzdem was helfen
    @Vorposter: dann lieber noch mit ElseIf(bzw. am besten einem Select Case, da nur eine Option stimmen kann...)
    mit If fände ich das in den Resourcen auch nicht so toll, es gibt im ResourceManager sehr schöne Funktionen ;)

    Edit: KeyPreview muss je nach Controls aufm Formular True sein ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Das erste hab ich jetzt hingekriegt!

    Jetzt weiß ich noch nicht wirklich wie das mit dem blocken ist!
    Vielleicht weißt das noch jemand und kann es mir ausführlich erklären.

    Danke für die geschrieben Antworten (und die die vllt. noch geschrieben werden.)

    VinFreak
    Das mit der kollisionskontrolle würde ich so machen

    VB.NET-Quellcode

    1. Dim rect_Picturebox As Rectangle = New Rectangle(PictureBox1.Left, PictureBox1.Top, PictureBox1.Width, PictureBox1.Height) 'Rectagle des der Picturebox ermittel
    2. Dim rect_Hinderniss As Rectangle = New Rectangle(Hinderniss.left, hinderniss.top, hinderniss.width, hinderniss.height) 'Rectangle des Hindernisses ermitteln
    3. 'Abfragen ob die picturebox das hinderniss berührt:
    4. If rect_Hinderniss.IntersectsWith(rect_Picturebox) Then
    5. 'Die Picturebox berührt das Hinderniss
    6. End If