ImageIcon

HommeCocoa

Membre actif
3 Janvier 2003
173
0
Vevey - Suisse
Bonjour,

Est-il possible de retravailler la taille d'une image d'instance ImageIcon?
Je n'ai trouvé que des méthodes de type getIconHeight, mais il ne semble pas exister de
setIconHeight.

Comme faire pour imposer une taille à des images en Java?

Merci,
David
 
En faite c'est simplement qu'au moment de l'afficher dans un JPanel, j'aurais voulu qu'elle s'adapte à la taille du JPanel.

En faite, en l'occurence, elle doit s'afficher dans certaine condition dans un JPanel, mais elle doit aussi s'afficher parfois dans un JButton de taille inférieur, peut-on les afficher plus petite qu'elle ne sont réellement, un peu comme en HTML ou on peut mettre des contraites de taille?
 
En faite c'est simplement qu'au moment de l'afficher dans un JPanel, j'aurais voulu qu'elle s'adapte à la taille du JPanel.


Surcharge la fonction paint:
Bloc de code:
 public void paint(Graphics g) {
    Graphics2D g2 =(Graphics2D) g;
    g2.drawImage(( f ) ? f1 : f2,0,0,this);
  }

C'est valable pour tous les composants.
 
arf oui, j'avais pas vu qu'il existait un méthode drawImage avec les arguements height et width...

J'avais déjà bel et bien surchargé la méthode mais avec un simple

g.drawImage(img, 0, 0, null)...

je pensais travailler au niveau de l'imageIcon genre img.setHeight... bêtement...

Merci en tout cas! :rolleyes:
 
En faite c'est simplement qu'au moment de l'afficher dans un JPanel, j'aurais voulu qu'elle s'adapte à la taille du JPanel.

En faite, en l'occurence, elle doit s'afficher dans certaine condition dans un JPanel, mais elle doit aussi s'afficher parfois dans un JButton de taille inférieur, peut-on les afficher plus petite qu'elle ne sont réellement, un peu comme en HTML ou on peut mettre des contraites de taille?

il vaudrait mieux avoir 2 jeux d' image
on peut le faire en HTML et c'est fortement déconseillé
car la déformation homotétique le lissage la definition , tu risques d'avoir un effet un peu crado

tu as un utilitaire sous mac osx

man sips

pour rapetisser une image
exemple d'un icns 128x128 transformé en png 64x64

/usr/bin/sips -z 64 64 -s format png --out "AboutDemo Application.png" ../PyAppStubApplication.icns

ou toshop bien sur
 
Du moment qu'on parle de dessin et de redéfinition de la méthode paint(), je vais vous faire part d'un autre des mes problèmes. (héé oui j'en ai des soucis...)

J'utilise un JPanel pour afficher des Images dedans, jusque là, pas de soucis, la méthode paint(Graphics g) est simplement réécrite.

Seulement, j'aimerais que ce JPanel ait une bordure en utilisant pour cela ça méthode setBorder() et en lui passant un objet de type BevelBorder par exemple.

Or mais méthode paint() étant réécrite, le Border ne survit pas à son appel...

En clair il me semble impossible d'afficher un Border à un JPanel lors qu'on doit redéfinir sa méthode paint(). C'est bien ça?

Dois-je mettre des JPanel l'un dans l'autre où y a t il une solution plus élégante?

Merci encore,
David
 
Il suffit simplement d'appeler la méthode paint du JPanel:
Bloc de code:
public void paint(Graphics g) {
    super.paint(g);

    Graphics2D g2 =(Graphics2D) g;
    g2.drawImage(( f ) ? f1 : f2,0,0,this);
  }

;)

Ceci-dit, je persiste à penser qu'il vaut mieux que tu utilises un JLabel (qui fera le paint), à l'intérieur d'un JPanel (qui fera office de conteneur). Le border sera à mettre au JLabel (quand même).
 
Ne pas oublier d'utiliser l'option d'anti-aliasing:

Bloc de code:
g2d.setRenderingHints(Graphics2D.ANTIALIASING, Graphics2D.ANTIALIAS_ON);
:)


oui je sais
mais ça reste moins propre que des jeux d'image différets

car souvant quand on rapetisse une image un petit renforcement s'impose
pour éviter l'effet trop lissé flou mais ça c'est mon coter
j'aime bien faire de beaux icons et de belles images

:zen: