//CODE PERFORMS ZOOM IN AND OUT OF AN IMAGE import import import import import import import [Link].*; [Link].
ImageIO; [Link].*; [Link].*; [Link].*; [Link]; [Link];
public class Zoominout extends JFrame { ShowCanvas canvas; public Zoominout() throws Exception { super(); Container container = getContentPane(); canvas = new ShowCanvas( "e:/[Link]"); [Link](canvas); pack(); setVisible(true); } public static void main(String arg[]) throws Exception { new Zoominout(); } } class ShowCanvas extends JPanel { int imageX = 0, imageY = 0; int lastMouseX = 0, lastMouseY = 0; int centerX = 225; int centerY = 225; int canvasWidth = 450; int canvasHeight = 450; double scaleFactor = 1.0; boolean firstMouseDrag = true; BufferedImage image; private BufferedImage scaled; public ShowCanvas() throws Exception { setBackground([Link]); MouseMotionHandler mouseHandler = new MouseMotionHandler(); addMouseMotionListener(mouseHandler); addMouseListener(mouseHandler); addMouseWheelListener(mouseHandler);
// File f = new File(imagePath); Image rawImage = null; image = new BufferedImage([Link](this), [Link](this), BufferedImage.TYPE_INT_ARGB); setSize([Link](), [Link]()); Graphics2D g2 = [Link](); [Link](rawImage, imageX, imageY, this); } public ShowCanvas(String imagePath) throws Exception { setBackground([Link]); MouseMotionHandler mouseHandler = new MouseMotionHandler(); addMouseMotionListener(mouseHandler); addMouseListener(mouseHandler); addMouseWheelListener(mouseHandler); File f = new File(imagePath); Image rawImage = [Link](f); image = new BufferedImage([Link](this), [Link](this), BufferedImage.TYPE_INT_ARGB); setSize([Link](), [Link]()); Graphics2D g2 = [Link](); [Link](rawImage, imageX, imageY, this); } @Override public Dimension getPreferredSize() { return new Dimension((int) ([Link]()), (int) ([Link]())); } protected BufferedImage getScaledInstance() { if (scaled == null) { int width = (int) ([Link]() * scaleFactor); int height = (int) ([Link]() * scaleFactor); scaled = new BufferedImage(width, height, [Link]()); Graphics2D g2d = [Link](); AffineTransform transformer = new AffineTransform(); [Link](scaleFactor, scaleFactor); // scale by 2x on x and y [Link](transformer); [Link](image, 0, 0, this); [Link](); } return scaled; } public Dimension getVirtualSize() { return new Dimension( (int) (getWidth() * scaleFactor),
(int) (getHeight() * scaleFactor)); } public Point getVirtualPoint(int x, int y) { return new Point( (int) (x * scaleFactor), (int) (y * scaleFactor)); } public void paintComponent(Graphics g) { [Link](g); Dimension vitualSize = getVirtualSize(); int xOffset = (getWidth() - [Link]) / 2; int yOffset = (getHeight() - [Link]) / 2; Graphics2D g2D = (Graphics2D) [Link](); [Link]([Link]); [Link](0, 0, [Link](), [Link]()); [Link]([Link]); [Link](xOffset, yOffset, [Link], [Link]); [Link]([Link]); [Link](getWidth() / 2, 0, getWidth() / 2, getHeight()); [Link](0, getHeight() / 2, getWidth(), getHeight() / 2); Point virtualPoint = getVirtualPoint(imageX, imageY); [Link](virtualPoint); [Link](getScaledInstance(), virtualPoint.x + xOffset, virtualPoint.y + yOffset, this); [Link](); } class MouseMotionHandler extends MouseMotionAdapter implements MouseListener, MouseWheelListener { public void mousePressed(MouseEvent e) { lastMouseX = [Link](); lastMouseY = [Link](); } public void mouseDragged(MouseEvent e) { int xDiff = [Link]() - lastMouseX; int yDiff = [Link]() - lastMouseY; imageX = imageX + xDiff; imageY = imageY + yDiff; lastMouseX = [Link](); lastMouseY = [Link](); repaint(); }
public void mouseWheelMoved(MouseWheelEvent e) { scaled = null; int notches = [Link](); scaleFactor = scaleFactor + notches / 10.0; if (scaleFactor < 0.5) { scaleFactor = 0.5; } else if (scaleFactor > 3.0) { scaleFactor = 3.0; } repaint(); } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mouseClicked(MouseEvent e) { } } }