Zoom em uma imagem

Olá tudo bem???
eu estaria bem se não fosse esse pequeno grande problema:
eu tenho uma imagem, e quero dar um zoom em uma parte dela… só que eu não estou conseguindo. O que eu consigo até agora é aumentar o tamanho de toda a imagem, mas somente um parte dela eu estou tendo dificuldades.
Alguém poderia me ajudar???
Obrigada.
Patricia. :slight_smile:

Oi Patrícia,

Utilize a classe java.awt.Canvas.ImageViewCanvas

Ajuda um bucado :slight_smile:

Tchau.

Tente:

import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
 
public class Zoom extends JFrame  
{
	mapPanel  map    = new mapPanel("usa.gif");
	
public Zoom()
{
 
	addWindowListener(new WindowAdapter() 
    {	public void windowClosing(WindowEvent ev) 
		{	dispose();
			System.exit(0);}});
	setBounds(10,10,700,400);
	getContentPane().setLayout(null);
	getContentPane().add(map);	
	setVisible(true);
 
}
public class mapPanel extends JPanel
{
	Image map;
	double mw,mh;
	double zw,zh;
	double mx,my;
	double zf=1,tx=0,ty=0;

public mapPanel(String name)
{
	setBounds(50,50,200,150);
	setBackground(Color.white);
	map = getToolkit().createImage(name);
	MediaTracker tracker = new MediaTracker(this); 
	tracker.addImage(map,0); 
	try   {tracker.waitForID(0);} 
	catch (InterruptedException e){}
	mw  = map.getWidth(null);
	mh  = map.getHeight(null);
	zw  = 200;
	zh  = 150;
	mx  = mw/2;
	my  = mh/2;

	addMouseListener(new MouseAdapter()
	{
		public void mousePressed(MouseEvent m)
		{
			zf = zf + 0.025;
			double sw = zw / mw;
			double sh = zh / mh;
			double sx = m.getX() / sw;
			double sy = m.getY() / sh;
			tx = mw/2 - (sx-tx);
			ty = mh/2 - (sy-ty);
			repaint();
		}
	});
}
public void paintComponent(Graphics g)
{
	super.paintComponent(g);
	Graphics2D g2 = (Graphics2D)g;
	g2.scale(zf*zw/mw,zf*zh/mh);
	g2.translate(tx/zf,ty/zf);
	g2.drawImage(map,0,0,null);
	g2.dispose();
}	
}		
public static void main(String[] args ) 
{
	new Zoom();
}
}