Bildgrösse festlegen

Status
Nicht offen für weitere Antworten.

lin

Top Contributor
*n'abend*

Hm, hab da doch schon wieder ein Problem...
Ich möchte ein Bild auf ein Panel zeichnen, so dass es auf die Grösse des Panels skaliert wird...
Die Methode drawImage() skaliert das Bild ja automatisch auf eine angegebene Breite w und Höhe h.

Code:
class JImagePanel extends JPanel {

   public void paint(Graphics g) {
      Graphics2D g2 = (Graphics2D)g;
      //image laden

      g2.drawImage(image, 0, 0, w, h, this);
   }
}


Aber wie bekomme ich die Breite und die Höhe des Panels raus?

Code:
pane.getHeight(); /*und*/ pane.getWidth(); //geben 0 zurück, da das Frame noch nicht gezeichnet ist...

Wie muss ich dat machen?

???:L

Danke schonmal für Antworten!
 
wie geht das? passt sich die Grösse des Bildes da automatisch an der Grösse des Panels an?
 
hm, eigentlich wollte ich wissen, wie man die Breite und die Höhe eines Panels rausbekommt, ehe es gezeichnet ist,

image.getScaledInstance(width, height, hints) gibt mir ja ein skaliertes Bild zurück, aber dafür muss ich eben die width und die height wissen, und genau die möchte ich ja rausbekommen... funzt aber eben mit pane.getHeight und pane.getWidth net, weil die 0 zurückgeben, solange das Frame noch nicht gezeichnet ist...
 
Weiß jetzt zwar die Antwort net, wie du die Höhe und Breite bekommst, bevor dein Panel gezeichnet ist, aber du kannst die größe deines Panels mit

Code:
setPreferredSize(Dimension dim)

vorab festlegen, falls dir das hilft.
 
hast du es mit getHeight() und getWidth() schon ausprobiert?
das soltle nämlich wunderbar klappen. sobald dein panel dargestellt wird hat es nämlich höhe und breite und solang es nicht dargestellt hat brauht dein bild auch nicht gezeichnet zu werden
 
ok, ich werd's mal versuchen, danke schon mal euch allen!

EDIT: ja, funktioniert super mit getWidth & getHeight 😀 , ich hab nur den Fehler gemacht, dass ich die Klasse, die das Bild zeichnet, vor dem "frame.getContentPane).add(pane)" aufgerufen habe, deshalb konnte die Methode gar nicht wissen, wie gross das ganze einmal wird...

8) bin jetzt total happy 🙂
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben