Programación en castellano
-Tutoriales

Gráficos con Java 2D


Transformar Formas, Texto e Imágenes

Podemos modificar el atributo transform en el contexto Graphics2D para mover, rotar, escalar y modificar gráficos primitivos mientras son dibujados. El atributo transform está definido por un ejemplar de AffineTransform.

Graphics2D proporciona varios métodos para cambiar el atributo transform. Podemos construir un nuevo AffineTransform y cambiar el atributo transform de Graphics2D llamando al método setTransform.

AffineTransform define los siguientes métodos para hacer más sencilla la construcción de nuevas transformaciones:

  • getRotateInstance
  • getScaleInstance
  • getShearInstance
  • getTranslateInstance

De forma alternativa podemos usar uno de los métodos de transformación de Graphics2D para modificar la transformación actual. Cuando se llama a uno de esos métodos de conveniencia, la transformación resultante se concatena con la transformación actual y es aplicada durante el dibujado.

  • rotate--para especificar un ángulo de rotación en radianes.
  • scale--para especificar un factor de escala en direcciones x e y.
  • shear--para especificar un factor de compartición en direcciones x e y
  • translate--para especificar un desplazamiento de movimiento en direcciones x e y

También podemos construir directamente un AffineTransform y concatenarlo con la transformación actual llamando al método transform .

El método drawImage también está sobrecargado para permitirnos especificar un AffineTransform que es aplicado a la imagen a dibujar. Especificar un transform cuando se llama a drawImage no afecta al atributo transform de Graphics2D.

.  Ejemplo: Transform

El siguiente programa es el mismo que StrokeandFill, pero también permite al usuario elegir una transformación para aplicarla al objeto selecciona cuando se dibuje.

Pulsa sobre la imagen para ejecutar el  applet.

Esta es una imagen del GUI del applet. Para ajecutar el applet, pulsa sobre ella. El applet aparecerá en una nueva ventana del navegador.

Transform.java contiene el código completo de este applet.

Cuando se elige una opción de transformación, se modifica un ejemplar de AffineTransform y se concatena con una transformación de movimiento que mueve la Shape hacia el centro de la ventana. La transformación resultante se pasa al método setTransform para seleccionar el atributo transform de Graphics2D

switch (Transform.trans.getSelectedIndex()){
case 0 : at.setToIdentity();
	 at.translate(w/2, h/2); break;
case 1 : at.rotate(Math.toRadians(45)); break;
case 2 : at.scale(0.5, 0.5); break;
case 3 : at.shear(0.5, 0.0); break;
...
AffineTransform toCenterAt = new AffineTransform();
toCenterAt.concatenate(at);
toCenterAt.translate(-(r.width/2), -(r.height/2));
g2.setTransform(toCenterAt);
 
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad
Mantenida por: Claudio y Dani.

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: jugar gratis | amor | navidad 2009 | registro de dominios | servidores dedicados
más internet: comprar | gratis | posicionamiento en buscadores | decoración libre | gifs animados