JAVA 2DIng. Yeimmy Alejandra Contreras Suarez.
Introducción.Para empezar a dibujar en Java, primero se debeentender el sistema de coordenadas, la cual es unesquema para ...
Renderización con Graphics 2Djava.awt.Graphics2D es una clase que extiende ajava.awt.Graphics proporcionándole un control ...
Java 2D provee gráficos, texto, e imágenes de dosdimensiones a través de extensiones de AbstractWindowing Toolkit (AWT)Inc...
SHAPE  Es una interfaz que sustenta la definición de clases con formas geométricas  diversasPasos para pintar un objeto Sh...
Clases e interfaces más importantes  Contenidas en los paquetes java.awt y java.awt.geomInterfaces:  Composite: define mét...
Tips para pintar objetos graficos1. Variar la anchura del pincel.2. Definir colores o patrones de relleno para lasfiguras....
Atributos de pincelLos atributos del pincel (que pertenecen a la interfazStroke) definen las características del trazo dib...
Atributos de rellenoLos atributos de relleno del contexto de un Graphics2D estánrepresentados por un objeto Paint. Cuando ...
La porción a dibujarLa porción a dibujar (en inglés clipping path) es eltrozo de una figura o imagen que debe serrenderiza...
TransformacionesEl contexto de un objeto Graphics2D contiene una transformaciónque se usa al reubicar objetos desde el esp...
Métodos de composiciónCuando dos objetos se superponen en un mismo dibujo (yasean figuras, rasgos tipográficos o imágenes)...
Ejemplo Shape
Tratamiento del colorColorModel. ColorSpace representa un sistema cualquiera para poder medir loscolores; por norma genera...
Control de ColoresLos colores mejoran la apariencia de un programa yayudan a transmitir su significado.Por ejemplo un semá...
Métodos de Color y métodos                   GraphicsMétodo                                                              D...
EJEMPLO
Upcoming SlideShare
Loading in …5
×

Java 2 d

592 views
515 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
592
On SlideShare
0
From Embeds
0
Number of Embeds
155
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Java 2 d

  1. 1. JAVA 2DIng. Yeimmy Alejandra Contreras Suarez.
  2. 2. Introducción.Para empezar a dibujar en Java, primero se debeentender el sistema de coordenadas, la cual es unesquema para identificar a cada uno de los posiblespuntos en la pantalla.De manera predeterminada, la esquina superiorizquierda de un componente GUI (Applet o Ventana)tiene las coordenadas (0,0).La coordenada x es la distancia horizontal que sedesplaza hacia la derecha, desde la esquina superiorizquierda. La coordenada y es la distancia vertical quese desplaza hacia abajo, desde la esquina superiorizquierda.
  3. 3. Renderización con Graphics 2Djava.awt.Graphics2D es una clase que extiende ajava.awt.Graphics proporcionándole un control máspotente sobre la presentación de texto, imágenes ofiguras geométricas. Un objeto Graphics (que es una claseabstracta) representa el lienzo abstracto y el contexto enel que puede dibujarse cualquier cosa; este lienzo puedeestar enlazado con un área física de un monitor, orepresentar una imagen en memoria que sólo se deseamanipular y no tiene representación directa durante esteproceso.
  4. 4. Java 2D provee gráficos, texto, e imágenes de dosdimensiones a través de extensiones de AbstractWindowing Toolkit (AWT)Incluye clases para Rectángulos, Líneas, Elipses.La clase Graphics2D, a través de su método draw,permite dibujar estos objetos debido a que todosellos implementan la interfaz shape.
  5. 5. SHAPE Es una interfaz que sustenta la definición de clases con formas geométricas diversasPasos para pintar un objeto Shpae En el momento de pintar al objeto Shape, se utiliza un objeto de la clase Stroke (que establece el pincel en el contexto del Graphics2D) para generar un nuevo Shape que representa el contorno del objeto a pintar.Stroke hace las veces de pincel o lápiz de contorno. Las coordenadas en que dibujar al nuevo objeto Shape se transforman desde el user space al device space de acuerdo con el atributo de transformación del contexto del Graphics2D. El user space (coordenadas de usuario) es un sistema de coordenadas absoluto e independiente del sistema físico donde plasmar el dibujo, mientras que el device space (coordenadas de dispositivo) es un sistema de coordenadas que sí depende del sistema final sobre el que dibujar; por ejemplo, si se usa un sistema multipantalla se obtendrá un renderizado distinto al monopantalla. En los casos más usuales, ambos sistemas de coordenadas coinciden. El contorno de la figura de tipo Shape se obtiene como una secuencia de segmentos que se dibujan en secuencia. El contorno resultante se rellena usando los atributos de tipo Paint y Composite del contexto del Graphics2D.
  6. 6. Clases e interfaces más importantes Contenidas en los paquetes java.awt y java.awt.geomInterfaces: Composite: define métodos para realizar composiciones de dibujos, esto es, definir el comportamiento del sistema a la hora de dibujar por ejemplo una figura geométrica sobre un área de gráficos que ya contenga algo dibujado. Entre otras cosas permite definir transparencias. Paint: extiende a Transparency y define la forma en que se construyen las tramas de color durante las operaciones draw() y fill(). Stroke: permite a un Graphics2D generar un objeto Shape que representa el contorno de la figura que se quiere dibujar.Clases: AffineTransform: representa una transformación en 2 dimensiones: traslación, inversión, rotación, etc. AlphaComposite: implementa a Composite. Gestiona la composición alfa (transparencias) básica para las figuras, textos e imágenes. BasicStroke: implementa a Stroke. Define el estilo del pincel que se aplica al dibujar el contorno de una figura. Color: implementa a Paint. Define por ejemplo el color del relleno o del contorno al dibujar una figura. GradientPaint: implementa a Paint. Define un patrón de relleno en forma de gradiente lineal de color. En otras palabras, al rellenar una figura, no se utiliza un solo color, sino un degradado de color que parte de un color inicial hasta otro final pasando por toda la gama intermedia. Graphics2D: extiende a Graphics. Es la clase fundamental para el renderizado 2D. TexturePaint: define un patrón de relleno complejo al rellenar una figura. Este patrón -también llamado textura- está almacenado en un objeto de tipo BufferedImage.
  7. 7. Tips para pintar objetos graficos1. Variar la anchura del pincel.2. Definir colores o patrones de relleno para lasfiguras.3. Delimitar un área concreta a renderizar (clippingpath).4. Trasladar, rotar, reducir o ampliar objetos cuandoson renderizados.5. Especificar la forma en que se componen las figurassuperpuestas
  8. 8. Atributos de pincelLos atributos del pincel (que pertenecen a la interfazStroke) definen las características del trazo dibujado por ellápiz o pincel en la imagen. Con BasicStroke puedendefinirse características tales como el ancho de línea, laforma en que acaba un trazo o el estilo con que se unenvarios segmentos en un dibujo.Los métodos de renderizado de Graphics2D que usa comoatributo contextual un objeto de tipo Stroke son draw(),drawArc(), drawLine(), drawOval(), drawPolygon(),drawPolyline(), drawRect() y drawRoundRect(). Cuando seinvoca a uno de estos métodos se renderiza el contornocorrespondiente (según la función llamada) y, actoseguido, el atributo Stroke define las características deltrazo mientras que el atributo Paint define el color o elpatrón de relleno de la marca dibujada por el pincel.
  9. 9. Atributos de rellenoLos atributos de relleno del contexto de un Graphics2D estánrepresentados por un objeto Paint. Cuando una figura o un glyph(un glyph es, tipográficamente hablando, el rasgo de un signo ouna letra según una fuente de texto; en otras palabras, la formade una letra concreta a partir de su tipo, tamaño ypeculiaridades: negrita, cursiva, fileteada, etc. La impresión deuna secuencia de rasgos tipográficos produce una cadena detexto, y cada uno de estos rasgos, como se verá másadelante, son tratados como un objeto Shape más) el objetoPaint se aplica a todos los píxeles que quedan dentro de la figuraen sí, y que representa el contorno del objeto dibujado por elpincel. Al rellenar el interior de una figura, el objeto Paint seencarga de gestionar todos los píxeles de la figura, a excepciónde los del contorno.Rellenar una figura con un único color opaco se puede hacerfácilmente estableciendo dicho color en el contexto del objetoGraphics2D con el método setColor(). La clase Color es laimplementación mas básica de la interfaz Paint. Para hacerrellenos más complejos, pueden usarse las clases GradientPaint yTexturePaint, que también heredan de Paint en Java2D.
  10. 10. La porción a dibujarLa porción a dibujar (en inglés clipping path) es eltrozo de una figura o imagen que debe serrenderizada; este trozo puede tener cualquier forma,y no tiene porqué ser necesariamente un rectángulosino que su forma puede ser establecida porprograma. Cuando se define una porción a dibujar(clipping path) en el propio contexto de unGraphics2D, sólo las zonas delimitadas por dichaporción (las que caen en su interior) son las que seránrenderizadas. Para cambiar esta porción del dibujo,puede usarse setClip() con objeto de crear un áreanueva o también es posible invocar al métodoclip(Shape) para modificar uno ya existente mediantela intersección con otro que se pasa como parámetro.
  11. 11. TransformacionesEl contexto de un objeto Graphics2D contiene una transformaciónque se usa al reubicar objetos desde el espacio de usuario (userspace) al espacio del dispositivo (device space) durante elrenderizado. Graphics2D proporciona varios métodos que permitenmodificar la transformación por defecto en su contexto. Lo mássencillo es llamar a uno de los métodos de transformación deGraphics2D como rotate(), scale(), shear() o translate(): sólo esnecesario especificar para cada una de ellos las características de latransformación requerida y Graphics2D automáticamente hará loscambios pertinentes en el momento de hacer el dibujo.Es más, también es posible concatenar transformaciones medianteel uso de un objeto de la clase AffineTransform, el cual puederealizar transformaciones en secuencia, tales como una rotaciónseguida de un cambio de escala. Cuando una transformación seconcatena con otra existente, la última que se especificó es laprimera en ser aplicada. Graphics2D contiene también un métodosetTransform(), que sobrescribe las transformaciones a aplicar a losobjetos que se vayan a dibujar pero que, ojo, no es posible usar pararealizar concatenación de transformaciones.
  12. 12. Métodos de composiciónCuando dos objetos se superponen en un mismo dibujo (yasean figuras, rasgos tipográficos o imágenes) es necesariodeterminar qué colores renderizar en los píxelessuperpuestos: este proceso se denomina composición. Lasinterfaces básicas de composición de Java2D sonComposite and CompositeContext. Por ejemplo, paraespecificar el estilo de composición que debe usarse puedeestablecerse un objeto de la clase AlphaComposite en elcontexto de un Graphics2D llamando a su métodosetComposite(). Las instancias de la clase AlphaCompositeestablecen una regla de composición que describe lamanera de mezclar un nuevo color con otro ya existentedefiniendo, por ejemplo, transparencias.Con este objetivo, para manejar transparencias, se disponede un valor alfa adicional al crear un objetoAlphaComposite. Este valor alfa (asociado al llamado «canal Figura 1.1. Ejemplo dealfa» de una imagen), incrementa o decrementa el canal de transparenciatransparencia del objeto según el valor que tome: si el valorde alfa es 1,0 el color será opaco, mientras que el color serátotalmente transparente si vale 0,0. Por suspuesto, losvalores intermedios especifican transparencias intermediasdel color. Así pues, el canal alfa se usa en conjunto con unobjeto de la clase Composite en el contexto de unGraphics2D para mezclar la imagen con los dibujos yaexistentes. Un ejemplo de manejo de transparenciasaparece en la figura 1.1
  13. 13. Ejemplo Shape
  14. 14. Tratamiento del colorColorModel. ColorSpace representa un sistema cualquiera para poder medir loscolores; por norma general se usan tres valores o componentes numéricosdistintos. Un objeto de tipo Color es un color fijo, definidoen términos de sus componentes en base a un ColorSpace particular. Porúltimo, la clase ColorModel describe un modo particular de representacióninterna de las muestras que describen cada píxel: mediante 4 bytes, con unentero de 32 bits, etc. A continuación, vamos a aclarar un poco estas clases ylos conceptos que representan.La clase ColorModel se usa para interpretar las muestras de un píxel de unaimagen y convertirlas en un color. Esto incluye mapear cada muestra de cadabanda de una imagen en componentes de un sistema particular de colores.Esta clase puede gestionar el valor de un píxel de dos formas diferentes:mediante una muestra por cada banda, o mediante un único entero de 32 bits;en este último caso debe encargarse de desempaquetar los componentescodificados por dicho entero.Para determinar el color de un píxel particular en una imagen, es necesariosaber qué información de color esta codificada en cada píxel. El objetoColorModel asociado con una imagen encapsula los métodos necesarios paratraducir un píxel hacia las muestras de color que lo componen y viceversa.
  15. 15. Control de ColoresLos colores mejoran la apariencia de un programa yayudan a transmitir su significado.Por ejemplo un semáforo tiene tres luces de coloresdistintos rojo indica alto, amarillo indica precaución yverde indica se puede pasar. Constante de Color Color Valor RGB Public final static color ORANGE Naranja 255,200,0 Public final static color PINK Rosado 255,175,175 Public final static color CYAN Cyan 0, 255, 255 Public final static color MEGENTA Magenta 255,0,255 Public final static color YELLOW Amarillo 255,255,0 Public final static color BLACK Negro 0,0,0 Public final static color WHITE Blanco 255,255,255 Public final static color LIGHT_GRAY Gris Claro 192,192,192 Public final static color DARK_GRAY Gris Oscuro 64,64,64 Public final static color RED Rojo 255,0,0 Public final static color GREEN Verde 0,255,0 Public final static color BLUE Azul 0,0,255
  16. 16. Métodos de Color y métodos GraphicsMétodo DescripciónPublic Color (int r, int g, int b) Crear un color basado en componentes rojo, verde y azul, expresados como enteros de 0 a 25Public Color (float r, float g, float b) Crear un color basado en componentes rojo, verde y azul, expresados como valores de punto flotante 0.0 a 1.0Public int getRed() Devuelve un valor entre 0 y 255, el representa el contenido rojoPublic int getGreen() Devuelve un valor entre 0 y 255, el representa el contenido verdePublic int getBlue() Devuelve un valor entre 0 y 255, el representa el contenido azul. Métodos de Graphics para manipular objetos ColorPublic Color getColor() Devuelve un objeto Color que representa el color actual para el contexto graficoPublic Color setColor(Color c) Establece el color actual para dibujar con el contexto de gráficos
  17. 17. EJEMPLO

×