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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| public static void main(String[] args)
{
JFrame demo = new JFrame();
demo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
demo.add(new ZoomPanel());
demo.pack();
demo.setVisible(true);
}
public ZoomPanel()
{
super();
initializePanel();
}
private void initializePanel()
{
setPreferredSize(new Dimension(1024, 768));
try
{
sourceImage = ImageIO.read(new File("c:/PDF995/testloreal.jpg"));
sourceImageWidth = sourceImage.getWidth();
sourceImageHeight=sourceImage.getHeight();
addMouseWheelListener(this);
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void paint(Graphics g)
{
RenderingHints rh = new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
AffineTransform at = new AffineTransform();
at.scale(zoom, zoom);
AffineTransformOp ato = new AffineTransformOp(at, rh);
BufferedImage zoomedImage = ato.filter(sourceImage, null);
g.drawImage(zoomedImage,0,0,null);
}
public void mouseMoved(MouseEvent e)
{
xMouse = e.getX();
yMouse = e.getY();
}
public void mouseWheelMoved(MouseWheelEvent e)
{
double wheelRotation =e.getWheelRotation();
if(width>sourceImageWidth || height>sourceImageHeight)
{
if(wheelRotation>0)
{
zoom+=(wheelRotation/10);
repaint();
}
else if(wheelRotation<0)
{
zoom-=(-wheelRotation/10);
repaint();
}
}
if(width<=sourceImageWidth || height<=sourceImageHeight)
{
if(wheelRotation>0)
{
zoom+=(wheelRotation/10);
repaint();
}
else if(wheelRotation<0)
{
zoom=1;
repaint();
}
}
repaint();
}
} |
Partager