Autor Beitrag
Ccenter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 154

Win7
C#
BeitragVerfasst: Sa 09.10.10 16:02 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 154

Win7
C#
BeitragVerfasst: Sa 09.10.10 16:31 
Eigendlich nicht groß, 200kb (Abmessung: 850x450).
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 154

Win7
C#
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: 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 user profile iconjaenicke geschrieben hat, das Hintergrundbild in einem separaten Thread laden und beim Fertigstellen des Ladevorgangs der BackgroundImage-Eigenschaft zuweisen (Invoke).