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é :
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()));			
 
			}});
toBufferedImage permet simplement de caster une image en bufferedimage.
Quand à sclae, elle permet normalement de changer la taille de l image, voila le code:
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;
		}
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
Peut etre que la facon dont j'initialise mon curseur peut vous aider:
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);
merci de votre aide.