Java 2 d

download Java 2 d

If you can't read please download the document

Transcript of Java 2 d

  • 1. JAVA 2DIng. Yeimmy Alejandra Contreras Suarez.

2. Introduccin.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. Renderizacin con Graphics 2Djava.awt.Graphics2D es una clase que extiende ajava.awt.Graphics proporcionndole un control mspotente sobre la presentacin de texto, imgenes ofiguras geomtricas. 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 fsica de un monitor, orepresentar una imagen en memoria que slo se deseamanipular y no tiene representacin directa durante esteproceso. 4. Java 2D provee grficos, texto, e imgenes de dosdimensiones a travs de extensiones de AbstractWindowing Toolkit (AWT)Incluye clases para Rectngulos, Lneas, Elipses.La clase Graphics2D, a travs de su mtodo draw,permite dibujar estos objetos debido a que todosellos implementan la interfaz shape. 5. SHAPEEs una interfaz que sustenta la definicin de clases con formas geomtricasdiversasPasos 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 lpiz 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 transformacin del contexto del Graphics2D. El user space (coordenadas de usuario) es un sistema de coordenadas absoluto e independiente del sistema fsico 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 ms 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. Clases e interfaces ms importantesContenidas en los paquetes java.awt y java.awt.geomInterfaces:Composite: define mtodos para realizar composiciones de dibujos, esto es, definir el comportamiento delsistema a la hora de dibujar por ejemplo una figura geomtrica sobre un rea de grficos que ya contengaalgo dibujado. Entre otras cosas permite definir transparencias.Paint: extiende a Transparency y define la forma en que se construyen las tramas de color durante lasoperaciones draw() y fill().Stroke: permite a un Graphics2D generar un objeto Shape que representa el contorno de la figura que sequiere dibujar.Clases:AffineTransform: representa una transformacin en 2 dimensiones: traslacin, inversin, rotacin, etc.AlphaComposite: implementa a Composite. Gestiona la composicin alfa (transparencias) bsica para lasfiguras, textos e imgenes.BasicStroke: implementa a Stroke. Define el estilo del pincel que se aplica al dibujar el contorno de unafigura.Color: implementa a Paint. Define por ejemplo el color del relleno o del contorno al dibujar una figura.GradientPaint: implementa a Paint. Define un patrn de relleno en forma de gradiente lineal de color. Enotras palabras, al rellenar una figura, no se utiliza un solo color, sino un degradado de color que parte de uncolor 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 patrn de relleno complejo al rellenar una figura. Este patrn -tambin llamadotextura- est almacenado en un objeto de tipo BufferedImage. 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. Atributos de pincelLos atributos del pincel (que pertenecen a la interfazStroke) definen las caractersticas del trazo dibujado por ellpiz o pincel en la imagen. Con BasicStroke puedendefinirse caractersticas tales como el ancho de lnea, laforma en que acaba un trazo o el estilo con que se unenvarios segmentos en un dibujo.Los mtodos 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 mtodos se renderiza el contornocorrespondiente (segn la funcin llamada) y, actoseguido, el atributo Stroke define las caractersticas deltrazo mientras que el atributo Paint define el color o elpatrn de relleno de la marca dibujada por el pincel. 9. Atributos de rellenoLos atributos de relleno del contexto de un Graphics2D estnrepresentados por un objeto Paint. Cuando una figura o un glyph(un glyph es, tipogrficamente hablando, el rasgo de un signo ouna letra segn una fuente de texto; en otras palabras, la formade una letra concreta a partir de su tipo, tamao ypeculiaridades: negrita, cursiva, fileteada, etc. La impresin deuna secuencia de rasgos tipogrficos produce una cadena detexto, y cada uno de estos rasgos, como se ver msadelante, son tratados como un objeto Shape ms) el objetoPaint se aplica a todos los pxeles 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 pxeles de la figura, a excepcinde los del contorno.Rellenar una figura con un nico color opaco se puede hacerfcilmente estableciendo dicho color en el contexto del objetoGraphics2D con el mtodo setColor(). La clase Color es laimplementacin mas bsica de la interfaz Paint. Para hacerrellenos ms complejos, pueden usarse las clases GradientPaint yTexturePaint, que tambin heredan de Paint en Java2D. 10. La porcin a dibujarLa porcin a dibujar (en ingls 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 rectngulosino que su forma puede ser establecida porprograma. Cuando se define una porcin a dibujar(clipping path) en el propio contexto de unGraphics2D, slo las zonas delimitadas por dichaporcin (las que caen en su interior) son las que sernrenderizadas. Para cambiar esta porcin del dibujo,puede usarse setClip() con objeto de crear un reanueva o tambin es posible invocar al mtodoclip(Shape) para modificar uno ya existente mediantela interseccin con otro que se pasa como parmetro. 11. TransformacionesEl contexto de un objeto Graphics2D contiene una transformacinque se usa al reubicar objetos desde el espacio de usuario (userspace) al espacio del dispositivo (device space) durante elrenderizado. Graphics2D proporciona varios mtodos que permitenmodificar la transformacin por defecto en su contexto. Lo mssencillo es llamar a uno de los mtodos de transformacin deGraphics2D como rotate(), scale(), shear() o translate(): slo esnecesario especificar para cada una de ellos las caractersticas de latransformacin requerida y Graphics2D automticamente har loscambios pertinentes en el momento de hacer el dibujo.Es ms, tambin es posible concatenar transformaciones medianteel uso de un objeto de la clase AffineTransform, el cual puederealizar transformaciones en secuencia, tales como una rotacinseguida de un cambio de escala. Cuando una transformacin seconcatena con otra existente, la ltima que se especific es laprimera en ser aplicada. Graphics2D contiene tambin un mtodosetTransform(), que sobrescribe las transformaciones a aplicar a losobjetos que se vayan a dibujar pero que, ojo, no es posible usar pararealizar concatenacin de transformaciones. 12. Mtodos de composicinCuando dos objetos se superponen en un mismo dibujo (yasean figuras, rasgos tipogrficos o imgenes) es necesariodeterminar qu colores renderizar en los pxelessuperpuestos: este proceso se denomina composicin. Lasinterfaces bsicas de composicin de Java2D sonComposite and CompositeContext. Por ejemplo, paraespecificar el estilo de composicin que debe usarse puedeestablecerse un objeto de la clase AlphaComposite en elcontexto de un Graphics2D llamando a su mtodosetComposite(). Las instancias de la clase AlphaCompositeestablecen una regla de composicin 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 detransparenciatransparencia del objeto segn el valor que tome: si el valorde alfa es 1,0 el color ser opaco, mientras que el color sertotalmente 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. Ejemplo Shape 14. Tratamiento del colorColorModel. ColorSpace representa un sistema cualquiera para poder medir loscolores; por norma general se usan tres valores o componentes numricosdistintos. Un objeto de tipo Color es un color fijo, definidoen trminos de sus componentes en base a un ColorSpace particular. Porltimo, la clase ColorModel describe un modo particular de representacininterna de las muestras que describen cada pxel: mediante 4 bytes, con unentero de 32 bits, etc. A continuacin, vamos a aclarar un poco estas clases ylos conceptos que representan.La clase ColorModel se usa para interpretar las muestras de un pxel 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 pxel 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 pxel particular en una imagen, es necesariosaber qu informacin de color esta codificada en cada pxel. El objetoColorModel asociado con una imagen encapsula los mtodos necesarios paratraducir un pxel hacia las muestras de color que lo componen y viceversa. 15. Control de ColoresLos colores mejoran la apariencia de un programa yayudan a transmitir su significado.Por ejemplo un semforo tiene tres luces de coloresdistintos rojo indica alto, amarillo indica precaucin 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 Rosado255,175,175 Public final static color CYAN Cyan0, 255, 255 Public final static color MEGENTAMagenta 255,0,255 Public final static color YELLOW Amarillo255,255,0 Public final static color BLACKNegro 0,0,0 Public final static color WHITEBlanco255,255,255 Public final static color LIGHT_GRAY Gris Claro192,192,192 Public final static color DARK_GRAYGris Oscuro 64,64,64 Public final static color REDRojo255,0,0 Public final static color GREENVerde 0,255,0 Public final static color BLUE Azul0,0,255 16. Mtodos de Color y mtodos GraphicsMtodoDescripcinPublic 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 contenidorojoPublic int getGreen() Devuelve un valor entre 0 y 255, el representa el contenidoverdePublic int getBlue()Devuelve un valor entre 0 y 255, el representa el contenidoazul. Mtodos de Graphics para manipular objetos ColorPublic Color getColor() Devuelve un objeto Color que representa el color actual parael contexto graficoPublic Color setColor(Color c)Establece el color actual para dibujar con el contexto degrficos 17. EJEMPLO