Charakterbewegung in Picturebox

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Charakterbewegung in Picturebox

    Hallo zusammen,

    ich bin gerade dabei, ein kleines Spiel im Stil eines Atari-Spiels zu programmieren. Das ist das erste Mal, dass ich was mache, bei dem man als Spieler eine Spielfigur über das Bild bewegen kann.
    Vom Prinzip her habe ich das so gelöst, dass ich mit Using Graphics und so das Bild zeichne und das dann in eine Picturebox tue. Das funktioniert im Fenstermodus (320x210 Pixel) auch gut, aber wenn ich den Vollbildmodus (1024x768) aktiviere habe ich extreme Performance-Probleme. Ich denke Mal, die Probleme kommen daher, dass ja das Bild jedes Mal komplett in die PictureBox gelegt wird.
    Mein Plan wäre jetzt, dass ich, anstatt immer das ganze Bild zu ersetzen, immer nur den Teil wo der Spieler sich befindet mit dem Hintergrund an dieser Stelle übermale und dann die Spielfigur neu zeichne, so dass nicht jedesmal der ganze Bildschirm neu gezeichnet werden muss.
    Nur müsste ich dafür ja eigentlich direkt in die Picturebox malen. Ist das überhaupt möglich?

    VB.NET-Quellcode

    1. cvas = New Bitmap(320, 210)
    2. Using g = Graphics.FromImage(cvas)
    3. 'zeichnen.....
    4. End Using
    5. PictureBox1.Image = cvas


    Ach und wo ich grad hier bin: Der Punktestand wird über "DrawString" auch ins Bild gemalt. Was mich hier stört ist, dass der Text geglättet wird und deswegen nicht nach Atari-Grafik aussieht. Ich habe den InterpolationMode für's 2D-Zeichnen schon auf NearestNeighbor gesetzt, aber das scheint sich auf den Text nicht ausziwirken...


    Every Lemming For Himself!

    Threadbare schrieb:

    direkt in die Picturebox malen
    geht so:

    VB.NET-Quellcode

    1. Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
    2. e.Graphics.DrawEllipse(Pens.Black, New Rectangle(10, 10, 100, 100))
    3. End Sub
    Sieh Dir die Methoden von Graphics an, da geht im Prinzip alles.
    Such im Forum nach Paint-Event.
    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!
    Für sowas muss man wirklich objektorientiert Programmieren.
    Also mit Zeichnungs-Klassen, evtl. einer Hierarchie verschiedener Figuren, die voneinander erben, und die jeweils wissen, wie sie sich selbst zu zeichnen haben.
    Und man muss das Prinzip OwnerDrawing verstehen - das geht - Rod deutet es schomal an - ganz anders, als dass man ein Bild hat, wo das gemalte drauf ist.
    Und man muss sich in die Klassen GraphicsPath und Matrix einarbeiten.
    Und möglichst ein Extra-Control erstellen, was die Figuren aufnehmen kann, und was auf User-Input reagiert.
    Höchstwahrscheinlich brauchts auch eine relationale Datenverarbeitung, denn normal hat ein Spiel viele Objekte, die miteinander in Beziehung stehen.

    Also kleiner Einstieg ist activevb.de/cgi-bin/tippupload…beweglicher_Figur_darstel
    aber das beinhaltet auch nicht alle Punkte.