Sei sulla pagina 1di 18

Programación Avanzada

Universidad del Aconcagua

Programación Avanzada
Gráficos en Java

Esp. Ing. César Aranda


unidatos@gmail.com

Licenciatura en Informática y Desarrollo de Software


v.2014

Jerarquía en API 2D

Esp. Ing. César Omar Aranda 2

Ing. César Omar Aranda 1


Programación Avanzada
Universidad del Aconcagua

Contexto Gráfico Básico

 Es un lienzo donde se pueden hacer trazos


 Todos los componentes de interfaz poseen un contexto
gráfico propio.
 Existe un objeto (brocha) como motor de interpretación
de los trazos en el contexto gráfico.
 La brocha es un objeto de la clase Graphics y contiene
métodos básicos para interpretar primitivas gráficas
 El método getGraphics() obtiene un objeto Graphics.
 Un componente puede modificar el contexto gráfico
usando:
 el método paintComponent(Graphics g) en Swing
 el método paint(Graphics g) en AWT
Esp. Ing. César Omar Aranda 3

Métodos de la Clase Graphics

Esp. Ing. César Omar Aranda 4

Ing. César Omar Aranda 2


Programación Avanzada
Universidad del Aconcagua

Clase Color

 Define métodos y constantes de manipular los colores.


 Los colores se crean en base al esquema RGB.
 Constructores:
 Color(int red, int green, int blue);
 Color(int rgb);
 Color(float red, float green, float blue);
 Métodos:  int getColor();
 int getRed();  int setColor( Color c );
 int getGreen();  Color darker();
 int getBlue();  Color brighter();

Esp. Ing. César Omar Aranda 5

Constantes de Color

 Ejemplos
 Color o = new CoIor(120, 120, 120);
 setBackground(Color.white);
 g.setColor(Color.red);
Esp. Ing. César Omar Aranda 6

Ing. César Omar Aranda 3


Programación Avanzada
Universidad del Aconcagua

Escribiendo texto

Esp. Ing. César Omar Aranda 7

Clase Font (fuente tipográfica)

Esp. Ing. César Omar Aranda 8

Ing. César Omar Aranda 4


Programación Avanzada
Universidad del Aconcagua

Clases Point, Dimension y Rectangle

Clase Constructores Miembros

Point • Point(); • int x;


Representa las • Point(int x, int y); • int y;
coordenadas de • Point(Point p);
un punto (x,y) • get / set
Dimension • Dimension(); • int width;
Almacena el • Dimension(int width, int height); • int height;
ancho y el alto de • Dimension(Dimension oldDimension);
un componente • get / set

Rectangle • Rectangle(Point p, Dimension d); • int x;


Almacena las • Rectangle(int x, int y, int width, int height); • int y;
dimensiones del • Rectangle(int width, int height); • int width;
área ocupada por • Rectangle(Point p); • int height;
un componente y
• Rectangle(Dimension d);
sus coordenadas
de origen • Rectangle(Rectangle r); • get / set
• Rectangle();
Esp. Ing. César Omar Aranda 9

Personalizar un JButton

1. JButton btPrueba = new JButton();


2. btPrueba.setBounds(new Rectangle(100, 50, 92, 42));
3. btPrueba.setBackground(new Color(246, 246, 246));
4. btPrueba.setForeground(Color.red) ;
5. btPrueba.setToolTipText("Prueba de Aceptar");
6. btPrueba.setFont(new Font("Comic Sans MS",Font.BOLD, 14));
7. btPrueba.setText(“Aceptar");
8. btPrueba.setMnemonic(KeyEvent.VK_A) ;

Esp. Ing. César Omar Aranda 10

Ing. César Omar Aranda 5


Programación Avanzada
Universidad del Aconcagua

Dibujo y refresco
 La clase JComponent es la superclase de la cual se
derivan todos los componentes en Swing
 Se pueden crear subclases de JComponent para definir
nuevos componentes
 El método paintComponent(Graphics g) definido en
Jcomponent se usa para dibujar el componente
 Este método es invocado por Swing cada vez que se
requiere repintar el componente (por ejemplo, si la
ventana estaba debajo de otra y va a pasar a primer
plano, o si estaba minimizada y se va restaurar)

Esp. Ing. César Omar Aranda 11

Métodos para repintar

 Los componentes muestran un contenido gráfico que es


necesario repintar en determinadas ocasiones.
 Se utilizan métodos heredados de Component:
 paint(Graphics g)
Contiene el código para pintar.
 update(Graphics g)
Borra el componente y lo repinta (llama a paint).
Puede redefinirse para invocar sólo a paint, sin borrar previamente,
evitando así parpadeos.
 repaint()
Repintar el componente.
Es el método normal a invocar por los demás métodos de la clase.
Llama a update.
Esp. Ing. César Omar Aranda 12

Ing. César Omar Aranda 6


Programación Avanzada
Universidad del Aconcagua

¿Dónde dibujar?

 Sobre el lienzo de un contenedor:


 JFrame
 JApplet
 JPanel

 Dentro de una componente de Imagen, como zona de


memoria accedida mediante Graphics:
 Image
 BufferedImage

Esp. Ing. César Omar Aranda 13

La Clase Insets

 Define un área de separación entre el borde de un


contenedor y sus componentes.
 Constructor:
 Insets(int top, int left, intbottom, intright);
 Los contenedores implementan el método:
 Insets getInsets()
 Redefinirlo si deseamos cambiar la separación:
public Insets getInsets() {
return new Insets(20, 20, 20, 20);
}

Esp. Ing. César Omar Aranda 14

Ing. César Omar Aranda 7


Programación Avanzada
Universidad del Aconcagua

Ejemplo de Insets

Esp. Ing. César Omar Aranda 15

Espacio Útil en Componentes Java

Esp. Ing. César Omar Aranda 16

Ing. César Omar Aranda 8


Programación Avanzada
Universidad del Aconcagua

Ejemplo 1 (clase gráfica)

Esp. Ing. César Omar Aranda 17

Ejemplo 1 (clase principal)

Esp. Ing. César Omar Aranda 18

Ing. César Omar Aranda 9


Programación Avanzada
Universidad del Aconcagua

Ejemplo 2 (clase gráfica)

Esp. Ing. César Omar Aranda 19

Ejemplo 2 (clase principal)

Esp. Ing. César Omar Aranda 20

Ing. César Omar Aranda 10


Programación Avanzada
Universidad del Aconcagua

Ejemplo 3 (clase gráfica)

Esp. Ing. César Omar Aranda 21

Ejemplo 3 (clase gráfica)

Esp. Ing. César Omar Aranda 22

Ing. César Omar Aranda 11


Programación Avanzada
Universidad del Aconcagua

Ejemplo 3 (clase principal)

Esp. Ing. César Omar Aranda 23

Agregados de la API Java2D

 Modelo de renderizado uniforme para pantallas e impresoras.


 Mejor conjunto de gráficos primitivos geométricos, como curvas,
rectángulos, y elipses.
 Mecanismo para renderizar virtualmente cualquier forma
geométrica.
 Mecanismos para detectar esquinas de formas, texto e imágenes.
 Modelo de composición que proporciona control sobre cómo se
renderizan los objetos solapados.
 Soporte de color mejorado.
 Soporte para imprimir documentos complejos.

Esp. Ing. César Omar Aranda 24

Ing. César Omar Aranda 12


Programación Avanzada
Universidad del Aconcagua

Contexto de Renderizado Java 2D

 Es el conjunto de atributos de estado asociados con un objeto


Graphics2D
 Puede configurarse para luego llamar a uno de los métodos de
renderizado de la clase Graphics2D, como draw o fill sobre texto,
formas o imágenes.

Esp. Ing. César Omar Aranda 25

Configuración del Contexto

 Usar el método set del atributo deseado:


 setStroke
 setPaint
 setFont
 setComposite
 setTransform
 setClip
 setRenderingHints
 Por ejemplo, para hacer un relleno de gradiente azul-verde, hay que
construir el objeto GradientPaint y luego llamar a setPaint:

Esp. Ing. César Omar Aranda 26

Ing. César Omar Aranda 13


Programación Avanzada
Universidad del Aconcagua

Métodos de Renderizado

 draw
 dibuja el exterior de una forma geométrica primitiva usando los atributos
stroke y paint
 fill
 dibuja cualquier forma geométrica primitiva rellenado su interior con el
color o patrón especificado por el atributo paint
 drawString
 dibuja cualquier cadena de texto. El atributo font se usa para convertir la
fuente a que luego se rellenan con el color o patrón especificados por el
atributo paint
 drawlmage
 dibuja la imagen especificada

Esp. Ing. César Omar Aranda 27

Formas 2D

 Las clases que definen gráficos primitivos comunes se encuentran


en el paquete java.awt.geom
 Contiene las definiciones para puntos, líneas, curvas, arcos,
rectángulos y elipses.

Esp. Ing. César Omar Aranda 28

Ing. César Omar Aranda 14


Programación Avanzada
Universidad del Aconcagua

QuadCurve2D y CubicCurve2D

 QuadCurve2D
 crear segmentos de curvas cuadráticos. Una curva cuadrática está
definida por dos puntos finales y un punto de control.

 CubicCurve2D
 crear segmentos de curvas cúbicos. Una curva cúbica está definida por
dos puntos finales y dos puntos de control.

Esp. Ing. César Omar Aranda 29

GeneralPath y Areas

 GeneralPath
 crea una curva arbitraria especificando una serie de posiciones a lo
largo de los límites de la forma que pueden conectarse por segmentos
de línea, curvas cuadráticas o curvas cúbicas.

 Areas
 Permite realizar operaciones booleanas, como uniones, intersecciones y
substracciones, sobre dos objetos Shape cualesquiera.

Esp. Ing. César Omar Aranda 30

Ing. César Omar Aranda 15


Programación Avanzada
Universidad del Aconcagua

Ejemplo 4: Contexto Gráfico y Formas

Esp. Ing. César Omar Aranda 31

Ejemplo 5: Relleno usando Graphics 2D

Esp. Ing. César Omar Aranda 32

Ing. César Omar Aranda 16


Programación Avanzada
Universidad del Aconcagua

Ejemplo 5: Crear la imagen de base

Esp. Ing. César Omar Aranda 33

Ejemplo 5: Rellenado del Panel

Esp. Ing. César Omar Aranda 34

Ing. César Omar Aranda 17


Programación Avanzada
Universidad del Aconcagua

Bibliografía
 Principal
 DEITEL, F. y DEITEL, H. (2008). Cómo programar en Java. 7ma
edición. Capítulo 12. México: Prentice Hall. Pearson Education.
 KNUDSEN, J. (1999). Java 2D Graphics. EEUU: O’Reilly y asociados.
 FROUFE QUINTAS, A. (2008). Java 2: Manual de usuario y tutorial. 5ª
edición. México: Alfaomega.
 Referencias complementarias
 http://www.javaya.com.ar/detalleconcepto.php?codigo=130&inicio=40
 http://chimera.labs.oreilly.com/books/1234000001805/ch20.html
 http://docstore.mik.ua/orelly/java-ent/jfc/ch09_01.htm
 http://www.wikilearning.com/tutorial/tutorial_de_java-
declaracion_de_intenciones/3938-1
 http://www.abaco.edu.pe/Manuales%5CGr%C3%A1ficos%202D%20Jav
a%5CGRAFICOS_2D%20EN%20JAVA.pdf
 http://devel.no-ip.org/programming/languages/java/tutorial/2d/TOC.html
Esp. Ing. César Omar Aranda 35

Ing. César Omar Aranda 18

Potrebbero piacerti anche