[MouseListener] Zoomer sur une image
Bonjour tout le monde j’ai trouve ce code sur net il sert à zoomer une image
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
import java.awt.*;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;
public class ZoomA extends JPanel implements MouseWheelListener {
private BufferedImage sourceImage;
private int sourceImageWidth,sourceImageHeight;
private Image scaledImage;
private double zoom = 1d;
public ZoomA() {
super();
initializePanel();
}
private void initializePanel() {
setPreferredSize(new Dimension(640, 480));
try {
sourceImage = ImageIO.read(new File("F:/testBG.jpg"));
sourceImageWidth = sourceImage.getWidth();
sourceImageHeight=sourceImage.getHeight();
addMouseWheelListener(this);
} catch (IOException e) {
e.printStackTrace();
}
}
public void paint(Graphics g){
int width = (int)(sourceImageWidth*zoom);
int height = (int)(sourceImageHeight*zoom);
Image img = sourceImage.getScaledInstance(width, height, Image.SCALE_SMOOTH);
g.drawImage(img,0,0,null);
}
public void mouseWheelMoved(MouseWheelEvent e) {
int wheelRotation =e.getWheelRotation();
if(zoom>1){zoom+=wheelRotation;
}else if(zoom==1){
zoom=(wheelRotation==1?zoom+wheelRotation:0.5);
}else if(zoom<1){
zoom/=(wheelRotation*2);
}
repaint();
}
public static void main(String[] args) {
JFrame demo = new JFrame();
demo.getContentPane().add(new ZoomA());
demo.pack();
demo.setVisible(true);
}
} |
Je vous demande ce que je doit changer dans ce code afin de zoomer l’image on cliquant sur elle (image) seulement et merci d’avance