Pessoal, queria saber como faço para dar um zoom em um painel sem modificar as propriedades dos gráficos contidos nele.
Por exemplo: Eu tenho uma imagem pintada no centro de um painel, e quero que quando acontecer um mouseWheelMoved, o JScrollPane dê uma aproximada nos gráficos.
Existe alguma técnica para isso sem mexer no estado dos componentes pintados? Alguém tem um tutorial ou alguma coisa que ajude?
tenho um exemplo para redimensionar imagens num jlabel
se for do mesmo estilo talvez vc possa usar
importjava.awt.BorderLayout;importjava.awt.Graphics2D;importjava.awt.event.ComponentEvent;importjava.awt.event.ComponentListener;importjava.awt.geom.AffineTransform;importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.IOException;importjava.util.logging.Level;importjava.util.logging.Logger;importjavax.imageio.ImageIO;importjavax.swing.ImageIcon;importjavax.swing.JFileChooser;importjavax.swing.JFrame;importjavax.swing.JLabel;publicclassMainextendsJFrame{privateBufferedImagebi;privateJLabeljLabel_Imagem;publicMain(){JFileChooserjFileChooser=newJFileChooser();jFileChooser.showOpenDialog(null);Filearquivo=jFileChooser.getSelectedFile();//arquivotry{bi=ImageIO.read(arquivo);//carrega a imagem real num buffer}catch(IOExceptionex){Logger.getLogger(Main.class.getName()).log(Level.SEVERE,null,ex);}//cria um jlabeljLabel_Imagem=newJLabel();//adiciona a acao de resizedjLabel_Imagem.addComponentListener(newComponentListener(){publicvoidcomponentResized(ComponentEvente){atualizarJLabel();}publicvoidcomponentMoved(ComponentEvente){}publicvoidcomponentShown(ComponentEvente){}publicvoidcomponentHidden(ComponentEvente){}});getContentPane().setLayout(newBorderLayout());getContentPane().add(BorderLayout.CENTER,jLabel_Imagem);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);}publicvoidatualizarJLabel(){if(jLabel_Imagem.getSize().width==0||jLabel_Imagem.getSize().height==0)return;BufferedImageaux=newBufferedImage(jLabel_Imagem.getSize().width,jLabel_Imagem.getSize().height,bi.getType());//cria um buffer auxiliar com o tamanho desejadoGraphics2Dg=aux.createGraphics();//pega a classe graphics do aux para edicaoAffineTransformat=AffineTransform.getScaleInstance((double)jLabel_Imagem.getSize().width/bi.getWidth(),(double)jLabel_Imagem.getSize().height/bi.getHeight());//cria a transformacaog.drawRenderedImage(bi,at);//pinta e transforma a imagem real no auxiliarjLabel_Imagem.setIcon(newImageIcon(aux));// seta no jlabel}publicstaticvoidmain(String[]args){//testenewMain();}}
na linha onde ta
AffineTransform at = AffineTransform.getScaleInstance((double) jLabel_Imagem.getSize().width / bi.getWidth(), (double) jLabel_Imagem.getSize().height / bi.getHeight());//cria a transformacao
modifica o tamanho da imagem
entao talvez
AffineTransform at = AffineTransform.getScaleInstance(2.0d,2.0d); //amplia 2x
AffineTransform at = AffineTransform.getScaleInstance(0.5d,0.5d); //reduz 50%