Jun 20

Graphics2D

Cuando queremos pintar nuestros gráficos en java, lo normal es redefinir el método paint() de algún componente. En este método recibimos un clase Graphics como parámatro que tiene montones de métodos para dibujar.

Sin embargo, hay una cosa que quizás no es tan conocida. Esa clase Graphics que recibimos, en las versiones modernas de java es en realidad una clase Graphics2D. Esta clase tiene muchísimas más posibilidades de pintado.

Una posibilidad tonta, es la de poder dibujar líneas gruesas. Aquí un pequeño ejemplo tonto de como hacerlo. Heredamos de alguno de los Component de java y redefinimos el método paint() así

public void paint (Graphics g)
{
   if (g instanceof Graphics2D)
   {
      Graphics2D g2 = (Graphics2D)g;
      g2.setStroke(new BasicStroke(5.0f)); // grosor de 5 pixels
      g2.drawLine (10, 10, 100, 100);
   }
}

Esto dibujará una línea de 5 pixels de grueso.

Otra posibilidad muy interesante de Graphics2D es la posibilidad de pasarle una clase AffineTransform. Esta clase define un "transformación" de las coordenadas, de forma que cualquier cosa que dibujemos de la forma habitual, se "deforma" siguiendo esa transformación. Podemos agrandar, alejar, trasladar, cizallar o rotar las figuras. Podríamos, por ejemplo, dibujar un texto o un cuadrado girados cualquier ángulo en cualquier sentido.

Aquí puedes ver un ejemplo un poco más detallado de cómo usar la clase AffineTransform.

Leave a Reply