PBox Generieren(Spiel)

  • VB.NET

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

    PBox Generieren(Spiel)

    Hey leute

    Ich bin neu in dem Forum :P

    Ich Komme gleich zum wichtigen :cursing:

    Ich programmiere ein kleines spiel in dem leute über die Strasse Rennen müssen. Allerdings Scheitere ich Beim Generieren der PictureBox

    Quellcode

    1. Private Sub GenPerson()
    2. Dim Rnd As Random = New Random
    3. Dim Zz As Integer = 0
    4. Dim Per As New PictureBox
    5. Dim Loc As Integer = 417
    6. Zz = Rnd.Next(1, 5)
    7. Loc += 40
    8. For x As Integer = 1 To Zz Step 1
    9. With Per
    10. .Visible = True
    11. .Location = New Point(10, 10)
    12. .Size = New Size(10, 10)
    13. .Tag = "Pesonen"
    14. .Image = My.Resources.image
    15. Me.Controls.Add(Per)
    16. End With
    17. Next
    18. End Sub


    Hat jemand eine idee Was ich Falsch mache?! <3
    : Nix OvalShape, alles im Paint-Ereignis der Form oder der PictureBox.
    Da musst Du mal gezielt nach suchen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ahh Ok Aber es nimmt mich schon wunder was ich oben Falsch habe O.o
    Mir fällt auch auf, dass ich dieses Paint Ereignis nicht Verschiben kann :O

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „jdsrubi“ ()

    Naja, durch deine For-Schleife fügst du der Form dieselbe Picturebox mehrmals zu... Vielleicht solltest du das Picturebox-Objekt erst in der Schleife erstellen, anstatt es bereits vorher zu deklarieren.

    Aber wie RodFromGermany schon sagte: Nutze GDI+!
    Das ist nämlich deutlich schneller und frisst auch sonst weniger Ressourcen als die Verwendung von Controls wie z.B. Pictureboxes!

    Kleine Erklärung (grob):
    Wenn eine Form sich aktualisiert und neu gezeichnet wird, löst sie ein Event aus (Paint bzw. OnPaint). In diesem Event passiert die eigentliche Magie. DU kannst das Folgendes machen:
    - Erstelle einen Sub für das Event
    - Greife auf das e.Graphics-Objekt zu (e ist vom Typ PaintEventArgs soweit ich weiß)
    - Frag mal MSDN, was das Graphics-Objekt so schönes kann
    - Zeichne nun deine eigenen Inhalte

    Wichtig:
    - Damit du regelmäßig neu zeichnen kannst, verwende Me.Invalidate() (vielleicht durch einen Timer mit Interval = 40 für 25 Bilder pro Sekunde)
    - Stelle deine Form auf DoubleBuffered = True, damit deine Form nicht beginnt zu flackern.

    Das war jetzt GDI+ in a nutshell... Es gibt hier im Forum auch sehr gute Tutorials zum Thema und sogar Spiele-Engines!

    Ich hoffe, ich konnte dir da noch helfen!

    MfG,
    X-Zat / Mo