Light Grey Pointer

viernes, 14 de octubre de 2016

Tarea - Graphics2D: Analizar apuntes Java2D

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