Bonjour,
j'ai éffectué de nombreuses recherches sur ce forum ce qui m'a permis de faire le code suivant.
J'ai une image que je souhaite zoomer. Le niveau de zoom dépend de la valeur que l'on donne à un JSlider (un curseur), qui n'a que les valeurs 0,1,2,3.
Dés que la position de ce curseur change voisi ce qui est éffecuté :
toBufferedImage permet simplement de caster une image en bufferedimage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public void stateChanged(ChangeEvent e) { JSlider curseur = (JSlider)e.getSource(); BufferedImage monImageB = toBufferedImage(monImage); scale (monImageB,(curseur.getValue())); }});
Quand à sclae, elle permet normalement de changer la taille de l image, voila le code:
aucun problème à la compilation, mais lorsque je le lance, et que je bouge le curseur, rien ne se passe car je ne sais pas faire réafficher la nouvelle Bufferedimage généré... je suis débutant dsl
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public static BufferedImage scale(BufferedImage bi, double scaleValue) { int width = (int) (bi.getWidth() * scaleValue); int height = (int) (bi.getHeight() * scaleValue); BufferedImage biNew = new BufferedImage( width, height, bi.getType()); Graphics2D graphics = biNew.createGraphics(); graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR); graphics.drawImage(bi, 0, 0, width, height, null); graphics.dispose(); return biNew; }
Peut etre que la facon dont j'initialise mon curseur peut vous aider:
merci de votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 curseur.setMajorTickSpacing(1); curseur.setMinorTickSpacing(1); curseur.setPaintLabels(true); curseur.setPaintTicks(true); maCarte.add(curseur,BorderLayout.EAST); curseur.setMajorTickSpacing(1); curseur.setMinorTickSpacing(1); curseur.setPaintLabels(true); curseur.setPaintTicks(true); maCarte.add(curseur,BorderLayout.EAST);
Partager