package j2d_rotate;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.geom.Line2D;
import java.awt.geom.QuadCurve2D;
import java.awt.geom.Rectangle2D;
import javax.swing.JPanel;
/**
*
* @author Mouse
*/
public class j2dPanel extends JPanel{
double centrox,centroy;
double rotate;
/*constructor*/
public j2dPanel(Dimension d){
this.setPreferredSize(d);
this.setSize(d);
this.setVisible(true);
//se obtiene las coordenadas del centro del jpanel
this.centrox= this.size().width/2;
this.centroy = this.size().height/2;
//se inicializa la rotacion en o grados
rotate = 0;
this.repaint();
}
@Override
public void paintComponent(Graphics g){
//se inicializa java2d
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// se añade un color de fondo degrado
g2.setPaint(new GradientPaint(0, 0, new Color(131,131,131), Float.valueOf(this.getSize().width), 0, new Color(188,194,236)));
g2.fill(g2.getClip());
//se creo otro objeto AffineTransform para guardar los valores iniciales
AffineTransform oldt = g2.getTransform();
//se aplica la rotacion y se traslada las coordenadas para que coincida con el centro del JPanel
g2.transform(AffineTransform.getRotateInstance(Math.toRadians(rotate),this.centrox,this.centroy));
/************************************************************************/
/* Una ves que se aplica la transformacion , todas las figuras se dibujaran siguiendo
el angulo asignado en radianes y tomando como eje el centro del JPanel */
//grosor y color de pincel
g2.setColor(new Color(200,10,10));
//se dibuja la figura, junto a una linea que nos servira para apreciar mejor la rotacion
g2.setPaint(new GradientPaint((float) this.centrox-100, (float) this.centroy, new Color(200,0,25), (float) this.centrox+100, (float) this.centroy, new Color(0,96,27)));
g2.fill(new Rectangle2D.Double( this.centrox-100, this.centroy-50, 200, 100));
g2.fill(new Rectangle2D.Double( this.centrox-100, this.centroy-50, 100, 170));
g2.setColor(new Color(0,0,200));
g2.setStroke(new BasicStroke(4.0f));
g2.draw(new Line2D.Double(this.centrox,this.centroy,this.centrox+100,this.centroy));
//un poco de texto
g2.setFont(new Font("Arial", Font.BOLD, 12));
g2.drawString(" R=" + rotate+"°",(float) this.centrox+100 ,(float) this.centroy);
/************************************************************************/
//retornamos a los valores iniciales
g2.setTransform(oldt);
g2.setColor(new Color(0,0,0));
g2.setFont(new Font("Arial", Font.PLAIN, 12));
g2.drawString("Rotación (Grados) = " + rotate + "°", 10,25);
g2.drawString("Rotación (Radianes) = " + Math.toRadians(rotate), 10,50);
g2.setFont(new Font("Arial", Font.BOLD, 12));
g2.drawString("x' 180°", 10 ,(float) this.centroy-10);
g2.drawString("x 0°", this.getSize().width-50 ,(float) this.centroy-10);
g2.drawString("y 270°", (float) this.centrox+5 ,30);
g2.drawString("y' 90°", (float) this.centrox+5 ,this.getSize().height-30);
// se dibuja una figura con forma de "flecha"
g2.setStroke(new BasicStroke(2.0f));
g2.draw(new QuadCurve2D.Double(this.centrox + 0, this.centroy + 50, this.centrox + 45,this.centroy + 45, this.centrox + 50, this.centroy + 0));
g2.draw(new Line2D.Double(this.centrox + 0,this.centroy + 50,this.centrox + 10,this.centroy + 40));
g2.draw(new Line2D.Double(this.centrox + 0, this.centroy + 50,this.centrox + 14, this.centroy + 55));
//dibujamos unaas lineas que simularan el eje de coordenas X & Y
g2.setStroke(new BasicStroke(1.0f));
g2.setColor(new Color(0,0,0));
g2.draw(new Line2D.Double(this.centrox,0,this.centrox,this.centroy*2));
g2.draw(new Line2D.Double(0,this.centroy,this.centrox*2,this.centroy));
this.repaint();
}
//aplica la rotacion en grados
public void setRotate(double r){
this.rotate=r;
}
//generamos un numero al azar de 0 a 360
public void setRotateRandom(){
this.rotate=(int)(Math.random()*360);
}
}
------------------------------------------------------------------------------------------------------------
public class Interfaz extends javax.swing.JFrame {
j2dPanel j2d;
/** Creates new form Interfaz */
public Interfaz() {
initComponents();
this.setTitle("ROTACION. GRAFICACION");
j2d = new j2dPanel(PANEL.getSize());
PANEL.add(j2d);
PANEL.repaint();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
cmdRotar1 = new javax.swing.JButton();
txtRotate = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
cmdRotar2 = new javax.swing.JButton();
PANEL = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
cmdRotar1.setText("Rotar Figura");
cmdRotar1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cmdRotar1ActionPerformed(evt);
}
});
txtRotate.setText("45");
jLabel1.setText("Angulo de rotacion (en grados):");
cmdRotar2.setText("Rotar Random");
cmdRotar2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cmdRotar2ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(32, 32, 32)
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtRotate, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cmdRotar1, javax.swing.GroupLayout.PREFERRED_SIZE, 177, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(cmdRotar2, javax.swing.GroupLayout.DEFAULT_SIZE, 195, Short.MAX_VALUE)
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(txtRotate, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(cmdRotar1)
.addComponent(cmdRotar2))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
PANEL.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
javax.swing.GroupLayout PANELLayout = new javax.swing.GroupLayout(PANEL);
PANEL.setLayout(PANELLayout);
PANELLayout.setHorizontalGroup(
PANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 673, Short.MAX_VALUE)
);
PANELLayout.setVerticalGroup(
PANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 381, Short.MAX_VALUE)
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(PANEL, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(PANEL, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void cmdRotar1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdRotar1ActionPerformed
j2d.setRotate(Double.valueOf(txtRotate.getText()));
}//GEN-LAST:event_cmdRotar1ActionPerformed
private void cmdRotar2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdRotar2ActionPerformed
j2d.setRotateRandom();
}//GEN-LAST:event_cmdRotar2ActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Interfaz().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel PANEL;
private javax.swing.JButton cmdRotar1;
private javax.swing.JButton cmdRotar2;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JTextField txtRotate;
// End of variables declaration//GEN-END:variables
}
------------------------------------------------------------------------------------------------------------
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new Interfaz().show();
}
}
------------------------------------------------------------------------------------------------------------
ESCALACION.
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
/**
* @web
* @author Mouse
*/
public class interfaz extends javax.swing.JFrame {
private FileNameExtensionFilter filter = new FileNameExtensionFilter("Archivo de Imagen","jpg","png");
private JFileChooser fileChooser = new JFileChooser();
private File Directorio = fileChooser.getCurrentDirectory();
private Zoom zoom;
/** Creates new form interfaz */
public interfaz() {
initComponents();
this.setTitle("ESCALACION. GRAFICACION");
this.setLocationRelativeTo(null);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jMenuItem1 = new javax.swing.JMenuItem();
jMenu2 = new javax.swing.JMenu();
jMenu3 = new javax.swing.JMenu();
jMenuItem5 = new javax.swing.JMenuItem();
jMenuItem2 = new javax.swing.JMenuItem();
jMenuItem6 = new javax.swing.JMenuItem();
jMenuItem7 = new javax.swing.JMenuItem();
jMenu4 = new javax.swing.JMenu();
jMenuItem3 = new javax.swing.JMenuItem();
jMenuItem8 = new javax.swing.JMenuItem();
jMenuItem9 = new javax.swing.JMenuItem();
jMenuItem10 = new javax.swing.JMenuItem();
jMenuItem4 = new javax.swing.JMenuItem();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 728, Short.MAX_VALUE)
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 517, Short.MAX_VALUE)
);
jMenu1.setText("File");
jMenuItem1.setText("Abrir imagen...");
jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem1ActionPerformed(evt);
}
});
jMenu1.add(jMenuItem1);
jMenuBar1.add(jMenu1);
jMenu2.setText("Herramientas");
jMenu3.setText("Zoom (+)");
jMenuItem5.setText("100%");
jMenuItem5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem5ActionPerformed(evt);
}
});
jMenu3.add(jMenuItem5);
jMenuItem2.setText("75%");
jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem2ActionPerformed(evt);
}
});
jMenu3.add(jMenuItem2);
jMenuItem6.setText("50%");
jMenuItem6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem6ActionPerformed(evt);
}
});
jMenu3.add(jMenuItem6);
jMenuItem7.setText("25%");
jMenuItem7.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem7ActionPerformed(evt);
}
});
jMenu3.add(jMenuItem7);
jMenu2.add(jMenu3);
jMenu4.setText("Zoom (-)");
jMenuItem3.setText("99%");
jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem3ActionPerformed(evt);
}
});
jMenu4.add(jMenuItem3);
jMenuItem8.setText("75%");
jMenuItem8.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem8ActionPerformed(evt);
}
});
jMenu4.add(jMenuItem8);
jMenuItem9.setText("50%");
jMenuItem9.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem9ActionPerformed(evt);
}
});
jMenu4.add(jMenuItem9);
jMenuItem10.setText("25%");
jMenuItem10.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem10ActionPerformed(evt);
}
});
jMenu4.add(jMenuItem10);
jMenu2.add(jMenu4);
jMenuItem4.setText("Restaurar");
jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem4ActionPerformed(evt);
}
});
jMenu2.add(jMenuItem4);
jMenuBar1.add(jMenu2);
setJMenuBar(jMenuBar1);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
Abrir_Imagen();
}//GEN-LAST:event_jMenuItem1ActionPerformed
private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem4ActionPerformed
zoom.Restaurar();
}//GEN-LAST:event_jMenuItem4ActionPerformed
private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem5ActionPerformed
zoom.Aumentar(100);
}//GEN-LAST:event_jMenuItem5ActionPerformed
private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
zoom.Aumentar(75);
}//GEN-LAST:event_jMenuItem2ActionPerformed
private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem6ActionPerformed
zoom.Aumentar(50);
}//GEN-LAST:event_jMenuItem6ActionPerformed
private void jMenuItem7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem7ActionPerformed
zoom.Aumentar(25);
}//GEN-LAST:event_jMenuItem7ActionPerformed
private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem3ActionPerformed
zoom.Disminuir(99);
}//GEN-LAST:event_jMenuItem3ActionPerformed
private void jMenuItem8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem8ActionPerformed
zoom.Disminuir(75);
}//GEN-LAST:event_jMenuItem8ActionPerformed
private void jMenuItem9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem9ActionPerformed
zoom.Disminuir(50); // TODO add your handling code here:
}//GEN-LAST:event_jMenuItem9ActionPerformed
private void jMenuItem10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem10ActionPerformed
zoom.Disminuir(25);
}//GEN-LAST:event_jMenuItem10ActionPerformed
//muestra una ventana de dialgo para abrir un archivo de imagen
public void Abrir_Imagen(){
fileChooser = new JFileChooser();
fileChooser.setFileFilter(filter);
fileChooser.setCurrentDirectory( Directorio );
int result = fileChooser.showOpenDialog(null);
if ( result == JFileChooser.APPROVE_OPTION ){
try {
zoom = new Zoom(ImageIO.read( fileChooser.getSelectedFile() ));
this.jPanel1.removeAll();
this.jPanel1.add(zoom);
this.jPanel1.repaint();
this.Directorio = fileChooser.getCurrentDirectory();
} catch (IOException ex) {
System.out.println("error: " + ex);
}
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new interfaz().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenu jMenu3;
private javax.swing.JMenu jMenu4;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JMenuItem jMenuItem10;
private javax.swing.JMenuItem jMenuItem2;
private javax.swing.JMenuItem jMenuItem3;
private javax.swing.JMenuItem jMenuItem4;
private javax.swing.JMenuItem jMenuItem5;
private javax.swing.JMenuItem jMenuItem6;
private javax.swing.JMenuItem jMenuItem7;
private javax.swing.JMenuItem jMenuItem8;
private javax.swing.JMenuItem jMenuItem9;
private javax.swing.JPanel jPanel1;
// End of variables declaration//GEN-END:variables
}
------------------------------------------------------------------------------------------------------------
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
/**
* @web
* @author Mouse
*/
public class Zoom extends JPanel {
private Image FOTO_ORIGINAL;
private Image FOTO_tmp;
private BufferedImage Imagen_en_memoria;
private Graphics2D g2D;
private boolean con_foto = false;
private int valEscalaX=0;
private int valEscalaY=0;
/* al crear el objeto se crea con una imagen pasada como parametro*/
public Zoom(BufferedImage f){
this.FOTO_ORIGINAL = f;
this.FOTO_tmp = f;
this.setSize(f.getWidth(),f.getHeight());
this.setVisible(true);
this.con_foto=true;
}
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
if(this.con_foto){
Imagen_en_memoria = new BufferedImage(this.getWidth(), this.getHeight(), BufferedImage.TYPE_INT_RGB);
g2D = Imagen_en_memoria.createGraphics();
g2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
//se añade la foto
g2D.drawImage(FOTO_tmp,0, 0, FOTO_tmp.getWidth(this), FOTO_tmp.getHeight(this), this);
g2.drawImage(Imagen_en_memoria, 0, 0, this);
}
}
public void Aumentar(int Valor_Zoom){
//se calcula el incremento
valEscalaX = (int) (FOTO_tmp.getWidth(this) * escala(Valor_Zoom) );
valEscalaY = (int) (FOTO_tmp.getHeight(this) * escala(Valor_Zoom) );
//se escala la imagen sumado el nuevo incremento
this.FOTO_tmp = FOTO_tmp.getScaledInstance((int) (FOTO_tmp.getWidth(this) + valEscalaX), (int) (FOTO_tmp.getHeight(this) + valEscalaY), Image.SCALE_AREA_AVERAGING);
resize();
}
public void Disminuir(int Valor_Zoom){
valEscalaX = (int) (FOTO_tmp.getWidth(this) * escala(Valor_Zoom) );
valEscalaY = (int) (FOTO_tmp.getHeight(this) * escala(Valor_Zoom) );
this.FOTO_tmp = FOTO_tmp.getScaledInstance((int) (FOTO_tmp.getWidth(this) - valEscalaX), (int) (FOTO_tmp.getHeight(this) - valEscalaY), Image.SCALE_AREA_AVERAGING);
resize();
}
private float escala(int v){
return v/100f;
}
public void Restaurar(){
this.FOTO_tmp = this.FOTO_ORIGINAL;
resize();
}
private void resize(){
this.setSize(FOTO_tmp.getWidth(this),FOTO_tmp.getHeight(this));
}
}
------------------------------------------------------------------------------------------------------------
package jcimagezoom;
/**
* @web
* @author Mouse
*/
public class Main {
public static void main(String[] args) {
new interfaz().setVisible(true);
}
}
No hay comentarios:
Publicar un comentario