Gráficos con Java 2D

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);

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR

SIGUIENTE ARTÍCULO