Páginas
Download J Planet
Downloads Java
Fórum
Canal do YouTube
Página no Face
sexta-feira, 4 de janeiro de 2013
Rotacionar Imagem em Java
-->
Programa Java que permite rotacionar uma imagem por vários graus (até um máximo de 360 graus).
O programa permite que você especifique se quer girar a imagem continuamente (Loop).
RotacionandoImagemPanel.java
// RotacionandoImagemPanel.java /* * Criado em 8 de outubro de 2010, 15:42:02 * */ package rotacionandoImagem; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JPanel; import javax.swing.Timer; /** * * @author Andréia */ public class RotacionandoImagemPanel extends JPanel implements ActionListener { private ImageIcon image; private int width; private int height; private double giro = 0; private double cont; private Timer timer; public RotacionandoImagemPanel() { image = new ImageIcon( getClass().getResource( "javadog_jplanet.png" ) ); timer = new Timer( 100, this ); } // fim do construtor RotacionandoImagemPanel @Override public void paintComponent( Graphics g ) { super.paintComponent( g ); Graphics2D g2d = ( Graphics2D ) g; // traduz a origem para o centro da tela g2d.translate( getWidth() / 2, getHeight() / 2 ); g2d.rotate( giro ); // rotaciona o sistema de coordenadas width = image.getIconWidth(); height = image.getIconHeight(); image.paintIcon( this, g, -(width / 2), -(height / 2) ); g.setColor( Color.WHITE ); g.drawOval( 0, 0, 1, 1 ); } // fim do metodo paintComponent public void setGiro( double giro ) { /* * 2PI equivale a 360° * PI equivale a 180° */ this.giro = Math.PI * giro / 180; cont = giro; repaint(); } // fim do metodo setGiro public void setLoop( boolean loop ) { if ( loop ) timer.start(); else timer.stop(); } // fim do metodo setLoop public void actionPerformed( ActionEvent event ) { giro = Math.PI * cont / 180; cont += 10; repaint(); } // fim do metodo actionPerformed } // fim da classe RotacionandoImagemPanel
RotacionandoImagemFrame.java
// RotacionandoImagemFrame.java /* * Criado em 8 de outubro de 2010, 15:54:35 * */ package rotacionandoImagem; import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFormattedTextField; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; /** * * @author Andréia */ public class RotacionandoImagemFrame extends JFrame { private JLabel labelAngulo; private JFormattedTextField textAngulo; private JButton buttonGirar; private JCheckBox checkLoop; private JPanel panelNorth; private RotacionandoImagemPanel panel; public RotacionandoImagemFrame() { panelNorth = new JPanel(); panel = new RotacionandoImagemPanel(); panelNorth.setBackground( Color.WHITE ); panel.setBackground( Color.WHITE ); labelAngulo = new JLabel( "Angulo:" ); textAngulo = new JFormattedTextField( 0 ); textAngulo.setColumns(3); textAngulo.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory( new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0")))); buttonGirar = new JButton( "Girar" ); buttonGirar.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent event ) { double angulo = Double.parseDouble( textAngulo.getText() ); if ( angulo > 360 ) { textAngulo.setText( "0" ); angulo = Double.parseDouble( textAngulo.getText() ); } panel.setGiro( angulo ); } } ); checkLoop = new JCheckBox( "Loop" ); checkLoop.setBackground( Color.WHITE ); checkLoop.addItemListener( new ItemListener() { public void itemStateChanged( ItemEvent event ) { panel.setLoop( checkLoop.isSelected() ); } } ); panelNorth.add( labelAngulo ); panelNorth.add( textAngulo ); panelNorth.add( buttonGirar ); panelNorth.add( checkLoop ); panelNorth.add( panel ); add( panelNorth, BorderLayout.NORTH ); add( panel ); } // fim do construtor // executa o aplicativo public static void main( String args[] ) { RotacionandoImagemFrame frame = new RotacionandoImagemFrame(); frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); frame.setBackground( Color.WHITE ); // configura a cor de fundo do frame frame.setSize( 600, 600 ); // configura o tamanho do frame frame.setVisible( true ); // exibe o frame } // fim de main } // fim da classe RotacionandoImagemFrame
Nenhum comentário:
Postar um comentário
Postagem mais recente
Postagem mais antiga
Página inicial
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário