klappt immer noch nicht
Ich poste hier mal meinen/deinen Quellcode:
public class Karte extends Applet implements MouseListener
{
Image dbImage, hintergrund;
Graphics dbGraphics;
public void paint(Graphics g)
{
boolean newHintergrund = false;
if (hintergrund==null){
hintergrund = this.createImage(this.getWidth(),this.getHeight());
newHintergrund = true;
}
if ((hintergrund.getWidth(this)!=this.getWidth()) || (hintergrund.getHeight(this)!=this.getHeight())){
hintergrund.flush();
hintergrund = null;
hintergrund = this.createImage(this.getWidth(),this.getHeight());
newHintergrund = true;
}
if (newHintergrund){
//zeug reinmalen
g.setColor(Color.black);
g.drawLine(3,3,19,19);
System.out.println("Hintergrund fertig");
}
g.drawImage (hintergrund,50,50,this);
g.fillRect(30,30,10,10);
System.out.println("repaint");
}
public void mousePressed(MouseEvent e)
{
repaint();
}
public void mouseReleased(MouseEvent e)
{}
public void mouseEntered(MouseEvent e)
{}
public void mouseExited(MouseEvent e)
{}
public void mouseClicked(MouseEvent e)
{}
}
Theoretisch sollte die Linie ja bei 53,53 anfangen und bei 69,69 aufhören, doch sie erscheint bei 3,3 -> 19,19.
Fazit, das die Aktionen die eigentlich im Hintergrundbild erscheinen sollen werden sofort gezeichnet, aber nur beim ersten Start.
Übrigens verstehe ich auch die ersten bei IF-Anweisungen nicht. Reicht nicht einfach:
boolean Hintergrundvorhanden = false;
public void paint(Graphics g){
If(!Hintergrundvorhanden){
hintergrund = this.createImage(23,23);
Hintergrundvorhanden = true;
}
g.drawImage (hintergrund,50,50,this);
}
Aber auch das klappt nicht.
Wenn es dann mal funktioniert möchte ich auch gerne, dass das Hintergrundbild gleichzeitig aufm Bildschirm aufgebaut wird, während es als Image gespeichert wird, damit ich sehe wie weit das Bild ist…
Eine andere Idee:
Kann man nicht erstmal was normal zeichnen, und dann wird alles was aufm Bildschirm ist gespeichert, als Screenshot sozusagen, wobei nicht der ganze Bildschirm benötigt wird sondern nur ein Ausschnitt.