Renderizado con Graphics2D
Un objeto Graphics (que es una clase abstracta) representa
el lienzo abstracto y el contexto en el que puede dibujarse cualquier cosa;
este lienzo puede estar enlazado con un área física de un monitor, o
representar una imagen en memoria que sólo se desea manipular y no tiene representación
directa durante este proceso.
El proceso de renderizado de Java2D está controlado por un
objeto de esta clase Graphics2D y sus atributos o características contextuales
que son, a su vez, objetos (un atributo contextual puede ser, por ejemplo, el
tamaño del pincel con que se dibuja una línea recta); el conjunto de estos
atributos es lo que conforma el contexto del objeto Graphics2D. Así por
ejemplo, para dibujar una imagen sobre un Graphics2D es necesario modificar su
contexto adecuadamente y llamar después a alguno de los métodos de renderizado.
Atributos de pincel
Los atributos del pincel (que pertenecen a la interfaz
Stroke) definen las características del trazo dibujado por el lápiz o pincel en
la imagen. Con BasicStroke pueden definirse características tales como el ancho
de línea, la forma en que acaba un trazo o el estilo con que se unen varios
segmentos en un dibujo.
Los métodos de renderizado de Graphics2D que usa como
atributo contextual un objeto de tipo Stroke son draw(), drawArc(), drawLine(),
drawOval(), drawPolygon(), drawPolyline(), drawRect() y drawRoundRect(). Cuando
se invoca a uno de estos métodos se renderiza el contorno correspondiente (según
la función llamada) y, acto seguido, el atributo Stroke define las
características del trazo mientras que el atributo Paint define el color o el
patrón de relleno de la marca dibujada por el pincel.
Atributos de relleno
Los atributos de relleno del contexto de un Graphics2D están
representados por un objeto Paint. Cuando una figura o un glyph (un glyph es,
tipográficamente hablando, el rasgo de un signo o una letra según una fuente de
texto; en otras palabras, la forma de una letra concreta a partir de su tipo,
tamaño y peculiaridades: negrita, cursiva, fileteada, etc. La impresión de una
secuencia de rasgos tipográficos produce una cadena de texto, y cada uno de
estos rasgos, como se verá más adelante, son tratados como un objeto Shape más)
el objeto Paint se aplica a todos los píxeles que quedan dentro de la figura en
sí, y que representa el contorno del objeto dibujado por el pincel. Al rellenar
el interior de una figura, el objeto Paint se encarga de gestionar todos los
píxeles de la figura, a excepción de los del contorno.
Rellenar una figura con un único color opaco se puede hacer
fácilmente estableciendo dicho color en el contexto del objeto Graphics2D con
el método setColor(). La clase Color es la implementación más básica de la
interfaz Paint. Para hacer rellenos más complejos, pueden usarse las clases
GradientPaint y TexturePaint, que también heredan de Paint en Java2D.
Transformaciones
El contexto de un objeto Graphics2D contiene una
transformación que se usa al reubicar objetos desde el espacio de usuario (user
space) al espacio del dispositivo (device space) durante el renderizado.
Graphics2D proporciona varios métodos que permiten modificar la transformación
por defecto en su contexto. Lo más sencillo es llamar a uno de los métodos de
transformación de Graphics2D como rotate(), scale(), shear() o translate():
sólo es necesario especificar para cada una de ellos las características de la
transformación requerida y Graphics2D automáticamente hará los cambios
pertinentes en el momento de hacer el dibujo.
Métodos de composición
Cuando dos objetos se superponen en un mismo dibujo (ya sean
figuras, rasgos tipográficos o imágenes) es necesario determinar qué colores
renderizar en los píxeles superpuestos: este proceso se denomina composición.
Las interfaces básicas de composición de Java2D son Composite and
CompositeContext. Por ejemplo, para especificar el estilo de composición que
debe usarse puede establecerse un objeto de la clase AlphaComposite en el
contexto de un Graphics2D llamando a su método setComposite(). Las instancias
de la clase AlphaComposite establecen una regla de composición que describe la
manera de mezclar un nuevo color con otro ya existente definiendo, por ejemplo,
transparencias.
No hay comentarios:
Publicar un comentario