Salut.
Voilà, j'ai crée une classe PanelImage qui extends JComponent pour pouvoir y mettre une image.
La taille du panel peut être changer et je souhaite que l'image soit en entière et les proportions soient gardées.
Ca j'ai fait sans problème.
Mais j'aimerais que l'image soit aussi centrée dans le panel. Et c'est la que ça coince.
Voici ma classe:
La taille de l'image est de 600x800 et celle du panel de 300x148.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 public class PanelImage extends JComponent { private Image image; public void setImage(Image image) { this.image = image; repaint(); } public void paintComponent(Graphics g) { Graphics2D g2d = (Graphics2D) g; Double scaleWidth = new Double(getWidth()) / new Double(image.getWidth(null)); Double scaleHeight = new Double(getHeight()) / new Double(image.getHeight(null)); if (scaleWidth > scaleHeight) scaleWidth = scaleHeight; else scaleHeight = scaleWidth; int x = (int) ((getWidth() - (image.getWidth(null)*scaleWidth)) / 2); int y = (int) ((getHeight() - (image.getHeight(null)*scaleHeight)) / 2); g2d.scale(scaleWidth, scaleHeight); g2d.drawImage(image, x, y, null); } }
Après un redimensionnement de l'image, sa taille est de 111x148.
Je calcule la position ou doit être l'image pour être centrée : 300 - 111 / 2 = 94 pour x et 0 pour y.
Le problème c'est que quand j'exécute, l'image ce met en x=17 et y=0.
Quelle est mon erreur?
Merci.
Partager