DoubleBuffering mit PictureBox

Retlaw

Erfahrenes Mitglied
Hallo,

für die Grafik in einem 2D-Spiel hab ich mit einer PictureBox DoubleBuffering
versucht um den Flimmer-Effekt zu entfernen.
Wenn ich alles direkt aufs Form zeichne sieht alles richtig aus (bis aufs Flimmern),
aber wenn ich in eine PictureBox zeichne und dann den Puffer mit
frmMain.Picture = picBuffer.Picture ausgeben will bleibt frmMain leer.
(PictureBox.Visible = false)
Ich vermute mal die Grafikmethoden wie PaintPicture und Line ändern nichts
an der Picture-Eigenschaft, aber wie kann ich das Gezeichnete der PictureBox
sonst verwenden ?
 
Hast Du mal überprüft, ob die autoredraw-Eigenschaft von der Picturebox auch true ist ? Damit das funktioniert, muss sie das nämlich sein.
Allerdings kann ich Dir diese Vorgehensweise nicht wirklich empfehlen, denn Double-Buffering macht nur Sinn, wenn man auf einen Buffer zeichnet und dann diesen Buffer anzeigt. Ich Deinem Fall muss man aber in die Picturebox zeichnen (und das auch noch mit autoredraw=true, was ca. 200% länger braucht) und diesen Inhalt dann noch mal auf den Bildschirm übertragen.
Was Dir vielleicht etwas weiter helfen könnte, ist die API-Funktion LockWindowUpdate (oder so).

MfG

Tobias
 
Also ich würde mich an deiner Stelle ein wenig in DirektX respektive Direct Draw ein arbeiten, das ist unter VB gar nicht so schwer. Und da hast du schon einen eingerichteten Double-Buffer, der wird dann nur noch "geblittet" (heißt das so?) somit, bleiben die Flimmer effekte aus.
Tutorials über VB und DirectX gibt es genügen (such am besten nach DirectX 7, das reicht für 2D allemal aus)

Gruss Homer
 
Zurück