ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
1405
1405
EMPFEHLEN
-
Hallo!
Ich habe folgendes Problemchen:
Ich habe eine Methode, die ein Hintergrundbild auf ein JFrame legt (1024x768) und zwar et wa so:
Eine zweite Methode die danach aufgerufen wird soll einen Splashscreen erstellen, dazu macht sie per Robot ein Capture vom Hintergrund (was ja bereits mein backgroundImage SEIN SOLLTE), legt dieses capture auf nen JDialog und ober dieses capture-Bild ein eigenes png was ein bischen transparent ist, sodass ein toller transparenter (login-)Dialog erscheinen sollte.Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
. . . try { backgroundImage = this.getToolkit().getImage("pics/hintergrund.jpg"); MediaTracker mt = new MediaTracker(this); mt.addImage(backgroundImage, 2); mt.waitForAll(); } catch... Container c = new Container(){ public void paint(Graphics g){ g.drawImage(backgroundImage,0,0,this); super.paint(g); } }; . . .
Jetzt kommts: manchmal funktioniert das wunderbar, manchmal macht aber der Robot ein capture von meinem eclipse (was unter dem backgroundImage ist), sodass es aussieht als würde eclipse durchscheinen.
Da ja der Robot erst nach dem drawImage gestartet wird, gehe ich davon aus, dass drawImage einfach unglaublich langsam ist ?!
Kann ich da irgendwas machen ? Gibts ne möglichkeit zu warten bis das (background-) Image komplett gezeichnet wurde und dann erst mit dem Programm weiter fortzufahren ?
Oder hat das eine andere Ursache ?
Vielen Dank für Eure Mühe
mfg
Sladda
-
weiß keiner Rat ? * schnüff *
-
Hallo Sladda.
Zufällig hatte ich mal eine Vorlesung diesbezüglich. Ausprobiert habe ich es selbst nicht, aber theoretisch sollte dein programm dann vor dem fortfahren auf das fertig laden des Bildes warten.
Methode zum Laden des BufferedImages:
public BufferedImage loadImage(String bildName, Component c){
Image bild = getToolkit().getImage(bildName);
waitForImage(bild,c); // Methode (siehe nächste Folie)
BufferedImage bi = new BufferedImage(bild.getWidth(this),
bild.getHeight(this),
BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = bi.createGraphics();
g2d.drawImage(bild,0,0,c); // male das Image auf das BImage
return bi;
}
Warten auf Laden vom Bild:
public void waitForImage(Image i, Component c){
try {
MediaTracker mt = new MediaTracker(c);
mt.addImage(i, 0);
try {
//Warten, bis das Image geladen ist
mt.waitForAll();
} catch (InterruptedException e) {
System.err.println(e.toString());
}
} catch (Exception e) {
System.err.println(e.toString());
}}Geändert von Inkog (29.06.07 um 19:35 Uhr)
-
30.06.07 11:58 #4
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo,
versuchs mal mit:
g.drawImage(backgroundImage,0,0,null);
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Hi!
Also, erstmal vielen Dank fürs Antworten.
@ Thomas: g.drawImage(backgroundImage,0,0,null); brachte leider keinen Erfolg.
Die Variante von Inkog werde ich gleich probieren, sieht ja sehr spannend aus
Mein jetziges Workaround sieht übrigens so aus, dass ich nach dem drawImage nen Thread.sleep(100) reinhaue. seit dem keine Probleme mehr. (aber schön find ichs ned)
Das einziges was ich mich nur die ganze Zeit frage: startet drawImage nen neuen Thread und zeichnet dann !? Ich sehe keine andere Erklärung... !
Viele Grüße
Chris
Ähnliche Themen
-
DrawingContext.DrawImage
Von juergen1969 im Forum .NET WPF & SilverlightAntworten: 2Letzter Beitrag: 28.11.09, 11:59 -
[c#] GDI+ ? | DrawImage
Von Xenolith im Forum .NET Windows FormsAntworten: 5Letzter Beitrag: 25.01.09, 21:11 -
Problem mit drawImage
Von SCIPIO-AEMILIANUS im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 08.09.08, 06:24 -
Problem mit PictureBox und DrawImage
Von Die Charlie im Forum .NET ArchivAntworten: 1Letzter Beitrag: 14.09.07, 12:49 -
BackgroundImage und DrawImage unterschiedlich?
Von Eroli im Forum .NET Grafik und SoundAntworten: 6Letzter Beitrag: 05.04.07, 18:11





Zitieren

Login





