www.mikrocontroller.net

Forum: PC-Programmierung Visual Basic Grafikaufbau sehr langsam


Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Julian W. (julian-w) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: der mechatroniker (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Chris ... (dechavue)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Zauberwort heißt double buffering.

Autor: Falk (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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....

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.