2012-04-04 17 views
0

Ich habe ein wirklich ärgerliches Problem:Bild zeigt nur manchmal

Ich möchte ein Bild zeichnen, habe ich geladen, bevor (es scheint richtig geladen zu werden). Aber jetzt passiert etwas wirklich seltsames: manchmal, erscheint das Bild, und manchmal es nicht! Aber wenn ich den gesamten Rahmen minimieren und es wieder maximieren, ist das Bild immer da! Natürlich male ich das ganze neu an, wenn ich das Bild gezeichnet habe, aber wie gesagt, nichts passiert, das Bild zeigt sich (immer) nicht.

Was mache ich falsch?

Ok, das Problem Code:

 //this is the method I load my image with 
    private BufferedImage loadImage(String name) { 
     try { 
      return ImageIO.read(new File(name)); 
     } catch (IOException e) { 
      e.printStackTrace(); 
      return null; 
     } 
    } 


    //this is the paint method of my JPanel 
public void paint(Graphics g){ 
    super.paint(g); 
    g.drawImage(img, 0, 0, getWidth(), getHeight(), this); 
} 
+1

Bitte geben Sie an, welche Sprache Sie verwenden, und geben Sie ein entsprechendes Code-Snippet ein. –

+0

Ich benutze Java – QI3it

+0

für bessere Hilfe schneller bearbeiten Sie Ihre Frage mit [SSCCE] (http://sscce.org/), – mKorbel

Antwort

0

wie Sie das Bild ziehen?

Was ist Ihre Umgebung? WPF, Winform ...

Häufigstes Problem ist, dass Sie das Paint-Ereignis verwenden müssen. Denn einmal gezeichnet, sind Ihre Formen, Bilder ... los, sobald ein neuer Malprozess beginnt.

+0

1. Vielen Dank für diese schnelle Antwort! 2. Ich zeichne das Bild mit der Malmethode meines JPanels: 'g.drawImage (img, 0, 0, getWidth(), getHeight(), das);' und meine Umgebung: Ich benutze Mac – QI3it

+0

ok, ich habe das Problem vorübergehend gelöst: Ich streiche meinen Rahmen, der alle Panels enthält, auch das Problem-Panel. Für den Moment funktioniert es, aber ich denke nicht, dass das eine gute Lösung ist. Jetzt weiß ich auch, dass mein Problem ist, dass die Paint-Methode nicht aufgerufen wird, obwohl ich "repaint()" und "setVisible (true)" aufrufen. So wie Boas Enkler gesagt hat, muss es etw. Tun. mit den Paint-Events. Also wenn jemand weiß, was zu tun ist, bitte hilf mir. Vielen Dank! – QI3it

+0

Ich möchte Ihnen helfen, aber ich mache nur die .net Welt in diesem Bereich. Gibt es so etwas wie ein Paint-Event, bei dem du ein paar Paint-Eventargs dabei hast? Normalerweise sollten Sie die eventargs verwenden, die in pained sind. –

Verwandte Themen