Gráficos con Java 2D

Cualquier Shape puede usarse como un path de recortado que restringe las porciones del �rea de dibujo que ser�n renderizadas. El path de recortado forma parte del contexto Graphics2D; para seleccionar el atributo clip, se llama a Graphics2D.setClip y se pasa a la Shape que define el path de recortado que queramos usar. Podemos reducir el path de recortado llamando al m�todo clip y pas�ndolo en otra Shape; el atributo clip se configura a la intersecci�n entre el clip actual y el Shape especificado.

.�Ejemplo: ClipImage

Este ejemplo anima un path de recortado para revelar diferentes porciones de una imagen:

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.

ClipImage.java contiene todo el c�digo de este applet. El applet requiere el fichero de imagen clouds.jpg.

El path de recortado est� definido por la intersecci�n de una elipse y un rect�ngulo cuyas dimensiones son aleatorias. La elipse se pasa al m�todo setClip , y luego se llama al m�todo clip para seleccionar el path de recortado a la intersecci�n entre la elipse y el rect�ngulo.

private Ellipse2D ellipse = new Ellipse2D.Float();
private Rectangle2D rect = new Rectangle2D.Float();
...
ellipse.setFrame(x, y, ew, eh);
g2.setClip(ellipse);
rect.setRect(x+5, y+5, ew-10, eh-10);
g2.clip(rect);

.�Ejemplo: Starry

Un �rea de recortado tambi�n puede crearse desde una cadena de texto existente. El siguiente ejemplo crea un TextLayout con la cadena The Starry Night. Luego, obtiene una l�nea exterior del TextLayout. El m�todo TextLayout.getOutline devuelve un objeto Shape y un Rectangle creado a partir de los l�mites del objeto Shape. Los l�mites contienen todos los pixels que layout puede dibujar. El color en el contexto gr�fico se selecciona a azul y se dibuja la figura exterior de la forma, como ilustran la siguiente imagen y el fragmento de c�digo.

FontRenderContext frc = g2.getFontRenderContext();
Font f = new Font("Helvetica", 1, w/10);
String s = new String("The Starry Night");
TextLayout tl = new TextLayout(s, f, frc);
AffineTransform transform = new AffineTransform();
Shape outline = textTl.getOutline(null);
Rectangle r = outline.getBounds();
transform = g2.getTransform();
transform.translate(w/2-(r.width/2), h/2+(r.height/2));
g2.transform(transform);
g2.setColor(Color.blue);
g2.draw(outline);

Luego, se selecciona un �rea de recortado en el contexto gr�fico usando el objeto Shape creado a partir de getOutline. La imagen starry.gif, que es una pintura famosa de Van Gogh, The Starry Night, se dibuja dentro de �rea de recortado que empieza en la esquina inferior izquierda del objeto Rectangle.

g2.setClip(outline);
g2.drawImage(img, r.x, r.y, r.width, r.height, this);
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.

Starry.java contiene el c�digo completo de este programa. El applet requiere el fichero de imagen Starry.gif.

COMPARTE ESTE ARTÍCULO

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

SIGUIENTE ARTÍCULO