No ha encontrado la respuesta aquí? Regístrate, preguntar y obtener una respuesta adecuada en cuestión de minutos!
  • Username:

Para poder verificar esta petición, por favor escribe en el campo de abajo lo siguiente: forodejava

Password:
Confirm Password:
Your Email:
Confirm Email:
Resultados 1 al 2 de 2
  1. #1
    Fecha de ingreso
    29 dic, 11
    Mensajes
    1
    Post Thanks / Like
    Poder de reputación
    0

    Predeterminado Manejo de Imágenes, mediante botones.

    Hola que tal estoy haciendo un applet, para manejar imágenes, logro hacer varias cosas pero hay una en especial que no puedo hacer andar es rotar tal imagen, este es el código si alguien me puede ayudar le estaría muy agradecido.

    Código:
    package MostrarImprimir;
    
    import java.applet.Applet;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionListener;
    import java.awt.print.*;
    import java.io.File;
    import java.io.IOException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.AbstractAction;
    import javax.swing.Box;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JToolBar;
    import javax.swing.UIManager;
    import javax.swing.UnsupportedLookAndFeelException;
    import javax.swing.WindowConstants;
    import javax.swing.border.LineBorder;
    import javax.imageio.*;
    import javax.swing.ImageIcon;
    import javax.swing.JOptionPane;
    
    public class MostrarImprimir extends Applet {
        
        private JPanel centerPanel;
        Image imagen;
        Image imagen1;
        ImagePanel imagefondo;
        ImagePanel panelImagen;
    
        private ImagePanel selected = null;
        
        private Dimension tamañoPantalla = Toolkit.getDefaultToolkit().getScreenSize();
        int zoomHabilitado;
        int rotariz1;
        int rotarder1;
        int imageWidth;
        int imageHeight;
        private ZoomAction zoomAction;
        
        RotarIz rotariz;
        RotarDe rotarder;
    
        private ImprimirAction imprimirAction;
        public String ruta;
    
        
        @Override
        public void init() {
    
            ruta = /*getParameter(*/ "c:\\Scanner\\4.jpg"/*"dir")*/;
            JFrame frame = new JFrame("Impresión");
            init2(frame.getContentPane());
            
            //Para Cambiar icono del frame
            ImageIcon logo;
            logo = new ImageIcon(getClass().getResource("/resources/logo.png"));
            frame.setIconImage(logo.getImage());
            //Fin Cambio de logo Frame  
            frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            frame.setSize((int) (tamañoPantalla.getWidth() / 2.0/*2.5*/), (int) (tamañoPantalla.getHeight() / 1.04));
            frame.setResizable(false);
            frame.setVisible(true);
            
            //Aparece en el centro de la pantalla
            frame.setLocationRelativeTo(null);
            
    
            try {
                
                imagen = ImageIO.read(new File(ruta));
    
                //Esta linea redimenciona la imagen original
                imagen1 = imagen.getScaledInstance(724, 1024, Image.SCALE_AREA_AVERAGING);
                          
            } catch (IOException ex) {
                System.out.println("No lee imagen");
                Logger.getLogger(MostrarImprimir.class.getName()).log(Level.SEVERE, null, ex);
              }  
        
            imagefondo = new ImagePanel(imagen1);
            centerPanel.add(imagefondo);
            int sizefondo = (int) Math.round(Math.sqrt(centerPanel.getComponentCount()));
            centerPanel.setLayout(new GridLayout(sizefondo, sizefondo));
            centerPanel.validate();
            
            imagefondo = new ImagePanel(imagen);
            //centerPanel.add(imagefondo);
            
            int sizefondooculto = (int) Math.round(Math.sqrt(centerPanel.getComponentCount()));
            centerPanel.setLayout(new GridLayout(sizefondooculto, sizefondooculto));
            centerPanel.validate();
            
            
        }
        
        public void init2(Container container) {
            
             //Para cambiar la apariencia del Frame
            try {
                UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(MostrarImprimir.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(MostrarImprimir.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(MostrarImprimir.class.getName()).log(Level.SEVERE, null, ex);
            } catch (UnsupportedLookAndFeelException ex) {
                Logger.getLogger(MostrarImprimir.class.getName()).log(Level.SEVERE, null, ex);
            }
         //Fin Cambio apariencia
    
            // Image imagencabeceraoriginal = Toolkit.getDefaultToolkit().createImage(MostrarImprimir.class.getClassLoader().getResource("Logo VM.png"));
            // imagencabeceraoriginal = imagencabeceraoriginal.getScaledInstance((int) (tamañoPantalla.getWidth() / 3), (int) ((tamañoPantalla.getWidth() / 3) * 0.2), 0);
            // ImageIcon imagencabecera = new ImageIcon();
            // imagencabecera.setImage(imagencabeceraoriginal);
            //JLabel cabecera = new JLabel(imagencabecera);
            
            
            JToolBar toolbar = new JToolBar();
            JButton imprimirButton = new JButton(imprimirAction = new ImprimirAction());
            ImageIcon iconoprint = new ImageIcon(MostrarImprimir.class.getClassLoader().getResource("print.png"));
            imprimirButton.setIcon(iconoprint);
            imprimirButton.setToolTipText("Imprimir");
            toolbar.add(imprimirButton);
            toolbar.addSeparator();
            
            JButton zoomButton = new JButton(zoomAction = new ZoomAction());
            ImageIcon iconozoom = new ImageIcon(MostrarImprimir.class.getClassLoader().getResource("lupa.png")); 
            zoomButton.setIcon(iconozoom);
            zoomButton.setToolTipText("Habilitar o deshabilitar la herramienta de Zoom");
            zoomAction.setEnabled(true);
            toolbar.add(zoomButton);
            toolbar.addSeparator();
    
            JButton rotarizButton = new JButton(rotariz = new RotarIz());
            ImageIcon rotariz1 = new ImageIcon(MostrarImprimir.class.getClassLoader().getResource("rotariz.png"));     
            rotarizButton.setIcon(rotariz1);
            rotarizButton.setToolTipText("Rotar Izquierda"); 
            rotariz.setEnabled(true);
            toolbar.add(rotarizButton);
            toolbar.addSeparator();
            
            JButton rotardeButton = new JButton(rotarder = new RotarDe());
            ImageIcon rotardezoom = new ImageIcon(MostrarImprimir.class.getClassLoader().getResource("rotarder.png"));
            rotardeButton.setIcon(rotardezoom);
            rotardeButton.setToolTipText("Rotar Derecha");
            rotarder.setEnabled(true);
            toolbar.add(rotardeButton);
            toolbar.addSeparator();
            
            toolbar.add(Box.createHorizontalGlue());
            container.add(toolbar, BorderLayout.NORTH);
            container.add(centerPanel = new JPanel(), BorderLayout.CENTER);
            // container.add(cabecera, BorderLayout.SOUTH);
         
        
        }
        
    private class ImagePanel extends JPanel implements Printable, MouseMotionListener {
            
            private Image image;
            int imageWidth;
            int imageHeight;
            int x = 0;
            int y = 0;
            double zoom = 0;
            int movex = 0, movey = 0;
            private MouseListener mouseListener = new MouseListener();
    
            private boolean arrastrando = false;
            private int xAnteriorRaton;
            private int yAnteriorRaton;
              
            ImagePanel(Image image) {
                
                this.image = image;            
                imageWidth = image.getWidth(null);
                imageHeight = image.getHeight(null);
                addMouseListener(mouseListener); 
                //Dar movimiento cuando esta con zoom
                addMouseMotionListener(this);
                         
            }
            
            public Image getImage() {
                
                return image;
            }
    
            @Override
            public void paint(Graphics g) {
    
                super.paint(g);
                Graphics2D g2 = (Graphics2D) g;
                int panelWidth = getWidth();
                int panelHeight = getHeight();
                double horizontalRatio = (double) panelWidth / imageWidth;
                double verticalRatio = (double) panelHeight / imageHeight;
                         
                if (horizontalRatio > verticalRatio) {                
                    
                    g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);                
                    
                    g2.drawImage(image, (int) ((panelWidth - imageWidth * verticalRatio) / 2 + 3) + x, 3 + y,
                            (int) ((imageWidth * verticalRatio) + (imageWidth * verticalRatio * zoom)), (int) ((imageHeight * verticalRatio) + (imageHeight * verticalRatio * zoom)), this);                
                    //g2.rotate(-270 * Math.PI / -180.0, getWidth() / 2, getHeight() / 2);
                    
                } else {
                    //no entra acá
                    g.drawImage(image, x, y, (int) ((imageWidth * horizontalRatio) + (imageWidth * horizontalRatio * zoom)), (int) ((imageHeight * horizontalRatio) + (imageHeight * horizontalRatio * zoom)), this);
                }
           
                if (rotarder1 == 1) {
    
                    //Para rotar 90 grados
                    g2.rotate(90 * Math.PI / 180.0, getWidth() / 2, getHeight() / 2);                
                   // g2.rotate(90);
    
                    g2.drawImage(image, (int) ((panelWidth - imageWidth * verticalRatio) / 2 + 3) + x, 3 + y,
                            (int) ((imageWidth * verticalRatio) + (imageWidth * verticalRatio * zoom)), (int) ((imageHeight * verticalRatio) + (imageHeight * verticalRatio * zoom)), this);
                    rotarder1 = 2;
                }
                
                if (rotarder1 == 2) {
    
                    //Para rotar 90 grados
                    g2.rotate(180 * Math.PI / 180.0, getWidth() / 2, getHeight() / 2);                
                   // g2.rotate(90);
                    g2.drawImage(image, (int) ((panelWidth - imageWidth * verticalRatio) / 2 + 3) + x, 3 + y,
                            (int) ((imageWidth * verticalRatio) + (imageWidth * verticalRatio * zoom)), (int) ((imageHeight * verticalRatio) + (imageHeight * verticalRatio * zoom)), this);
                    
                   // rotarder1 =4;
                    
                }else{
                    
                }
                
              /*  if (rotarder1 == 4) {
    
                    //Para rotar 90 grados
                    g2.rotate(270 * Math.PI / 180.0, getWidth() / 2, getHeight() / 2);                
                   // g2.rotate(90);
                    g2.drawImage(image, (int) ((panelWidth - imageWidth * verticalRatio) / 2 + 3) + x, 3 + y,
                            (int) ((imageWidth * verticalRatio) + (imageWidth * verticalRatio * zoom)), (int) ((imageHeight * verticalRatio) + (imageHeight * verticalRatio * zoom)), this);
                }
                */
            }
               
            @Override
            public int print(Graphics g, PageFormat f, int pageIndex) throws PrinterException {
                
                if (pageIndex > 0) {
                    return NO_SUCH_PAGE;
                }
                Graphics2D g2d = (Graphics2D) g;
                g2d.translate(f.getImageableX(), f.getImageableY());
                try {
                    g.drawImage(image, 0, 0, (int) f.getImageableWidth(), (int) f.getImageableHeight(), selected);
                    g2d = (Graphics2D) g;
                    g2d.translate(f.getImageableX(), f.getImageableY());
                } catch (Exception e) {
                    System.out.println("Problema con la impresion del archivo");
                    JOptionPane.showMessageDialog(centerPanel, "Ha ocurrido un error al intentar imprimir el documento.");
                }
                return PAGE_EXISTS;
            }
            
            @Override
            public void mouseDragged(MouseEvent e) {
                if ((x != 0) || (y != 0) || (movex != 0) || (movey != 0) || (zoom != 0)) {
                    
                    if (!arrastrando) {
                        xAnteriorRaton = e.getX();
                        yAnteriorRaton = e.getY();
                        arrastrando = true;
                        centerPanel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
                    } else {
                        centerPanel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
                        x = (x + e.getX()) - xAnteriorRaton;
                        y = (y + e.getY()) - yAnteriorRaton;
                        
                        xAnteriorRaton = e.getX();
                        yAnteriorRaton = e.getY();
                        
                        repaint();
                    }
                    
                }
            }
            
            @Override
            public void mouseMoved(MouseEvent e) {
                arrastrando = false;
            }
            
    private class MouseListener extends MouseAdapter {
                    
        //Para mostrar el icono de Zoom en la imagen
                Toolkit tk = Toolkit.getDefaultToolkit();
                Image cursormas = tk.createImage(MostrarImprimir.class.getClassLoader().getResource("ZoomIn.png"));
                Image cursormenos = tk.createImage(MostrarImprimir.class.getClassLoader().getResource("ZoomOut.png"));
                Cursor zoommas = tk.createCustomCursor(cursormas, new Point(centerPanel.getX(), centerPanel.getY()), "Acercar");
                Cursor zoommenos = tk.createCustomCursor(cursormenos, new Point(centerPanel.getX(), centerPanel.getY()), "Alejar");
        //FIN mostar icono de Zoom en imagen                   
               //Zoom Imagen 
                @Override
                public void mouseClicked(MouseEvent event) {
                    if (zoomHabilitado == 1) {
                        if (event.isAltDown()) {
                            zoom = 0;
                            x = 0;
                            y = 0;
                            movex = 0;
                            movey = 0;
                            repaint();
                        } else {
                            if (event.getButton() == MouseEvent.BUTTON1) {
                                centerPanel.setCursor(zoommas);
                                zoom += 0.5;
                                x = (int) (x - (event.getX() * 0.5));
                                y = (int) (y - (event.getY() * 0.5));
                            } else {
                                centerPanel.setCursor(zoommenos);
                                zoom -= 0.5;
                                x = (int) (x + (event.getX() * 0.5));
                                y = (int) (y + (event.getY() * 0.5));
                            }
                            repaint();
                        }
                    } else {
                        select((ImagePanel) event.getComponent());
                    }
                }
                //Fin Zoom Imagen
                
                //Aparece lupa con solo hacer click en el boton
                @Override
                public void mouseEntered(MouseEvent event) {
                    if (zoomHabilitado == 1) {
                        centerPanel.setCursor(zoommas);
                        centerPanel.setToolTipText("ALT + Clic: Tamaño original");
                    } else {
                        centerPanel.setCursor(Cursor.getDefaultCursor());
                    }
                }
                //Fin Aparece lupa
            }
        }
        
        private void select(ImagePanel image) {
            if (selected != null) {
                selected.setBorder(null);
            }
            selected = image;
            if (selected != null) {
                selected.setBorder(new LineBorder(Color.blue, 1));
                imprimirAction.setEnabled(true);
                
            } else {
                imprimirAction.setEnabled(false);
            }
        }
        
        private class ImprimirAction extends AbstractAction {
            
            ImprimirAction() {
                //Muestra nombre
                super("Imprimir");
            }
            
            @Override
            public void actionPerformed(ActionEvent e) {
          
                try {
                    imprimir();
                    //JOptionPane.showMessageDialog(centerPanel, "Se esta imprimiento el documento.");
                } catch (Exception ex) {
                }
                
            }
        }
        
        private class ZoomAction extends AbstractAction {
            
             ZoomAction() {
                super("Zoom");
            }
            
            @Override
            //Habilita Zoom
            public void actionPerformed(ActionEvent e) {
              
                if (zoomHabilitado == 0) {
                    zoomHabilitado = 1;
                } else {
                    zoomHabilitado = 0;
                }
            }
        }
    
        //Clase Rotar Izquierda
        private class RotarIz extends AbstractAction {
            //Lo unico que hace es mostrar el texto
            RotarIz() {
                super("Rotar Izquierda");
            }
          
            @Override        
            public void actionPerformed(ActionEvent e) { 
      
                   if (rotariz1 == 0) {
                    rotariz1 = 1;
    
                } else {
                    rotariz1 = 0;
                }  
                
            }  
            
        }
        
        //Clase Rotar Derecha
        private class RotarDe extends AbstractAction {
            
            RotarDe() {
                super("Rotar Derecha");
            }
    
            @Override        
            public void actionPerformed(ActionEvent e) { 
                           
                 if(rotarder1 == 0){
                             rotarder1 = 1; 
                             
                          } else {
                     
                              rotarder1 = 0;
                          }
                /* if(rotarder1==1){
                         rotarder1 = 2;
                     }*/
                 
            }        
        }
        
        public void imprimir() {
            PrinterJob impresion = PrinterJob.getPrinterJob();
            
            impresion.setPrintable(imagefondo);
            try {
                impresion.print();
            } catch (PrinterException ex) {
                System.out.println("Problema con la impresion");
                Logger.getLogger(MostrarImprimir.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
          
    }


    La solución completa para el hilo: aquí.


  2. #2
    Fecha de ingreso
    04 dic, 08
    Ubicación
    Argentina
    Mensajes
    643
    Post Thanks / Like
    Poder de reputación
    1189

    Predeterminado

    No ha encontrado la
    respuesta aquí?
    Regístrate, preguntar y
    obtener una respuesta
    adecuada en cuestión de minutos!


    Un registro de minutos: clic

    Sin publicidad para los miembros!
    Te remito a este tema. Ahí encontrarás un enlace a un pdf que te será util.

    Consejo: Utiliza el buscador del foro
    nramire1
    www.nramire1.unlugar.com

    Si pedís código, entrega el código.

    Invierte diez minutos y descubre como hacer preguntas de manera inteligente

Temas similares

  1. Usuario y contraseña mediante while
    Por Capo en el foro Java Básico
    Respuestas: 5
    Último mensaje: 30/11/2011, 02:48
  2. Manejo de imagenes mysql
    Por ivoldragon en el foro AWT-SWING
    Respuestas: 1
    Último mensaje: 06/02/2011, 05:00
  3. Respuestas: 6
    Último mensaje: 24/01/2011, 23:38
  4. Transferir archivos mediante bluetooth
    Por jorge.bil en el foro Java Básico
    Respuestas: 0
    Último mensaje: 09/03/2010, 14:34
  5. Crear un key mediante un String
    Por yurka en el foro Java avanzado
    Respuestas: 2
    Último mensaje: 03/04/2009, 22:07

Etiquetas para este tema

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •