Entwickler-Ecke
WinForms - Lauffähigkeit mit Backgroundimages
Ccenter - Sa 09.10.10 16:02
Titel: Lauffähigkeit mit Backgroundimages
Ich habe gerade ein Problem festgestellt, welches auftritt wenn ich meiner Form ein Hintergrundbild verpasst habe. Ich hatte das eigendlich schon immer, nur bin ich jetzt auf ein Hintergrundbild angewiesen :D
Das Problem besteht darin, dass die Form nicht sofort läd, sondern ca 1-2 Sekunden braucht bis sie fertig geladen hat. Die Controls auf der Form sind dannach noch 0,5-1 Sekunde komplett weiß und werden erst dann abgebildet. Ich dachte erst das mein Pc die Leistung nicht bringt (was eigendlich absurd wäre) und hab deshalb mal nem Freund die exe geschickt, der hat das gleiche Problem. Weiß einer wodran das liegen könnte? Gibt es eine empfohlene Dateigröße oder einen empfohlenen Dateityp? Die Hintergrundbilder hab ich mit Photoshop erstellt, momentan in png. jpeg hab ich auch probiert, gleiches Ergebniss. Mit Gimp entsteht ebendfalls das gleiche Problem.
jaenicke - Sa 09.10.10 16:19
Wie groß sind die Bilder denn?
Das kann schon sein, dass das etwas dauert. Vielleicht wäre es dann sinnvoll diese erst nach dem Start in einem Thread zu laden und dann anzuzeigen.
Ccenter - Sa 09.10.10 16:31
Eigendlich nicht groß, 200kb (Abmessung: 850x450).
Ralf Jansen - Sa 09.10.10 16:32
Falls du mit Transparenz(also die Controls vor dem Hintergrundbild mit BackColor = Transparent) arbeitest ist das ein grundsätzliches Problem. Die simulierte Transparenz in Winforms ist elendig langsam und das Problem nicht ohne weiteres behebbar.
Ccenter - Sa 09.10.10 16:47
Ja, ich arbeite mit Transparenz..
Gibt es vielleicht die Möglichkeit die Form erst anzuzeigen wenn die Controls fertig geladen haben und solange nichts anzuzeigen?
Yogu - So 10.10.10 17:20
Ist denn das Laden oder das Anzeigen langsam? Das kannst du testen, indem du ein anderes Fenster davor-, und dann wieder wegschiebst. Dauert der Bildaufbau dann auch so lange, ist wirklich das Zeichnen das Problem. Das kannst du natürlich nicht beheben, indem du das Formular ausblendest.
Sonst könntest du das Bild im Konstruktor über
Image.FromFile bzw.
FromStream laden und dieses Objekt dann für die
BackgroundImage-Eigenschaft verwenden. Dann ist sichergestellt, dass das Bild geladen ist, bevor das Formular angezeigt wird (der Konstruktor beendet wird).
Du könntest auch, wie
jaenicke geschrieben hat, das Hintergrundbild in einem separaten Thread laden und beim Fertigstellen des Ladevorgangs der
BackgroundImage-Eigenschaft zuweisen (
Invoke).
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!