Forum: PC-Programmierung Visual Basic Grafikaufbau sehr langsam


von Falk (Gast)


Lesenswert?

Hallo alle zusammen,


ich bin dabei mit Microsoft Visual Studio 2008 ein Brettspiel (Agricola) 
nachzuprogrammieren.

Da dieses Spiel über sehr viele Grafikanzeigen verfügt (Handkarten, 
Spielbrett und sonstiges) fängt das Programm an immer mehr zu ruckeln um 
all diese Informationen anzuzeigen.
Bis jetzt habe ich für jedes Bild eine eigene Picturebox bzw. Panel 
erstellt und das Bild als Hintergrundbild eingestellt. Somit werden 
schätzungsweise an die 100 bis 200 Bilder auf einer Form angezeigt.
Hinzu kommt, dass man zwischen verschiedenen Ansichten wechseln kann und 
man beim Wechsel mittlerweile sehen kann wie die einzelnen Bilder 
aufgebaut werden.


Gibt es irgendwelche Alternativen in Visual Basic um dieses Problem zu 
umgehen oder sollte man gar eine ganz neue Umgebung hierfür verwenden?

von Julian W. (julian-w) Benutzerseite


Lesenswert?

Also wenn du 200 PictureBoxes hasst, ist das kein Wunder.

Hier mal ein paar Möglichkeiten für bessere Performance:
-Eingenes Steuerelement schreiben
-Bilder in den Ram laden und von dort aus laden
-evtl. Bilder zusammenfassen, wenn möglich

von der mechatroniker (Gast)


Lesenswert?

Ich würde zu der Lösung tendieren, die fertige Ansicht im RAM zu rendern 
(großes Byte-Array, wobei jeweils drei Byte für ein Pixel benutzt 
werden) und dann auf einmal darzustellen.

von Falk (Gast)


Lesenswert?

Vielen Dank für die schnellen Antworten!

Ich bin leide noch ein Laie auf dem Gebiet. Könnte mir jemand in 
Kurzform erklären wie man die Bilder in den Ram hineinbekommt?

von Chris .. (dechavue)


Lesenswert?

Hi,

Ich würde dir auch raten, das genze ohne PictureBoxes zu lösen, sondern 
das ganze "manuell" in die Form / in ein eigenes Control zu zeichnen.

Darüber hinaus ist es sicher sinnvoll immer nur das neu zu zeichnen was 
sich wirklich geändert hat.
Einige Ideen / Algorithmen wie das Funktioniert findest du hier:
http://www.mycsharp.de/wbb2/thread.php?threadid=21782
http://www.mycsharp.de/wbb2/thread.php?threadid=28527
ist zwar in C#, lässt sich aber ganz leicht in VB umwandeln, z.B.: 
hiermit:
http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx

greets

von ... (Gast)


Lesenswert?

Das Zauberwort heißt double buffering.

von Falk (Gast)


Angehängte Dateien:

Lesenswert?

Das Zauberwort für die Bilder hieß tatsächlich Double Buffering, vielen 
Dank schonmal dafür, das Spiel läuft jetzt schonmal was flüssiger.

Leider scheint sich dieses Double Buffering nur auf Grafiken positiv 
auszuwirken, da aber auch sehr viele Panels und Labels angezeigt werden 
sieht man nach wie vor wie diese aufgebaut werden.

Gibt es denn auch ein Zauberwort für das Anzeigen von Panels und Labels?

P.S. Habe hier auch mal ein Screenshot von der Hauptansicht eines 
Spielers angehängt. Ich hoffe man kann die vielen einzelnen Anzeigen 
erkennen.
Der Spieler kann zudem unten ein TabControl öffnen wo weitere 
Informationen und Bilder angezeigt werden....

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.