1
|
|
2
|
- En su forma más simple un gráfico puede ser visto como una
representación de puntos o “píxeles” agrupados de manera que permitan
percibir visualmente alguna superficie, dibujo o forma.
- La pantalla de un computador puede ser vista como una matriz de píxeles.
|
3
|
- Hay que tener claro que no todas las pantallas permiten llevar a cabo
dibujos sobre ellas.
- Existen algunos tipos de terminales que solo permiten desplegar
caracteres de texto.
- Algunos ejemplos de interfaces de texto son las pantallas de comandos de
algunos sistemas operativos.
|
4
|
- Para graficar se necesita contar con un sistema operativo con soporte
gráfico y el hardware apropiado.
- La cantidad de píxeles por pulgada en una pantalla y la variedad de
colores pueden variar de un computador a otro y de un sistema operativo
a otro.
- Dadas las condiciones anteriores se puede graficar si el lenguaje de
programación cuenta con instrucciones o primitivas de graficación.
|
5
|
- En la ventana de texto el tipo de letra y “font” es el mismo para toda
la ventana.
- El despliegue de texto es a nivel de línea y no a nivel de píxel.
- El control del despliegue se lleva a cabo enviando caracteres a pantalla , incluyendo caracteres
especiales como tabuladores cambios de línea, retornos y otros.
- No permite la presentación de dibujos y texto juntos.
|
6
|
- Las clases más importantes de java para graficación pertenecen a las
bibliotecas de “awt” o Abstract Windowing Toolkit y a las clases de
manejo de componentes SWING incluyendo:
- javax.swing.JFrame; // Creación de ventana
- java.awt.Graphics; // Primitivas de graficación
- java.awt.Color; // Manejo de colores
- java.awt.Font; // Manejo de tipos de letra
- Existe también el Java 3D para manejo de gráficos tridimensionales.
|
7
|
- La clase JFrame permite crear ventanas utilizando el paquete
javax.swing.
- Para crear una ventana basta con crear una instancia de la misma,
asignarle un tamaño inicial y ejecutar el método “show” para
visualizarla.
|
8
|
|
9
|
|
10
|
|
11
|
- A diferencia del JOptionPane que “bloquea” o se queda esperando a que el
usuario ejecute alguna opción, al mostrar ventanas el programa continúa
con la siguiente instrucción inmediatamente.
- Note que el código del Ejemplo 1 no termina con la instrucción System.exit(0),
ya que si el programa principal finaliza y sale, las ventanas
desaparecerían.
- Si se crean varias ventanas se pueden mostrar todas a la vez y
mostrarlas o cerrarlas cuantas veces se desee.
- Siempre es posible definir ventanas de manera que si esta se cierra el
programa termina por lo que todas las demás ventanas se cerrarán
también.
|
12
|
- Por omisión cuando se presiona el botón de cerrar en una ventana esta
solamente deja de ser visible pero sigue activa en memoria.
- Si se desea que la aplicación finalice al cerrar la ventana, hay que
cambiar el comportamiento por omisión asociado al botón.
- Se puede indicar que se desea que el programa “salga al cerrar” de la
siguiente forma:
- ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
13
|
|
14
|
|
15
|
|
16
|
- En los JFrame el método que dibuja se llama: paint()
- Una manera de dibujar es crear una nueva clase para ventanas, con
instrucciones específicas dentro del método paint().
- La programación por objetos ofrece un mecanismo llamado Herencia que
permite “heredar” todos los atributos y métodos de una clase
preexistente y extenderla o sobrecargar alguno de sus métodos.
- Para dibujar basta con crear una nueva clase que “extienda” o “herede”
toda la funcionalidad de un JFrame pero que tenga sobrecargado el método
paint()
- La Herencia es tratada en profundidad en el siguiente curso.
|
17
|
|
18
|
|
19
|
|
20
|
- La ventana puede ser vista como una matriz compuesta por “píxeles” de
colores.
- Las dimensiones normalmente se expresan en “pixeles” (ancho,alto)
|
21
|
- La información del contexto gráfico se almacena en un objeto de la clase
Graphics.
- Al dibujar texto o formas dentro del objeto Graphics, se utiliza el
color asociado al contexto.
- El método para asociar un Color dentro del contexto gráfico Graphics es
el siguiente:
- public void setColor(Color color)
|
22
|
- Se pueden crear colores usando cualquiera de los dos constructores:
- Color (int rojo, int verde, int azul)
- Color (float rojo, float verde, float azul)
- Los tres parámetros representan los tres componentes básicos del color
(rojo, verde, azul). Son enteros de 0 a 255 o flotantes de 0.0f a 1.0f.
- Además existen colores constantes estáticos previamente definidos dentro
de la clase Color.
|
23
|
- Instancia Valores (RGB) Color
- Color.black ( 0 , 0 , 0 ) negro
- Color.white (255,255,255) blanco
- Color.gray (128,128,128) gris
- Color.red (255, 0 , 0 ) rojo
- Color.green ( 0 ,255, 0 ) verde
- Color.blue ( 0 , 0 ,255) azul
- Color.cyan ( 0 ,255,255) cyan
- Color.magenta (255, 0 ,255) magenta
- Color.yellow (255,255, 0 ) amarillo
- Color.orange (255,200, 0 ) anaranjado
- Color.pink (255,175,175) rosado
|
24
|
- Para dibujar una línea se utiliza el método drawLine que recibe las
coordenadas del punto de origen (x1, y1) y el punto final (x2,y2)
- De la siguiente forma:
- public void drawLine(int x1,int y1,int x2,
- int y2)
|
25
|
|
26
|
|
27
|
|
28
|
- Los óvalos incluyendo los círculos se especifican definiendo un
rectángulo dentro del cual se “circunscriben”.
- Por lo tanto los parámetros son la esquina superior izquierda del
rectángulo (x,y) dentro del cual se encierra el óvalo y el ancho y alto.
- Si se desea un óvalo relleno (“filled”) se puede utilizar el método fillOval()
de forma similar al drawOval() que simplemente dibuja el borde.
|
29
|
|
30
|
|
31
|
|
32
|
|
33
|
- El rectángulo se define mediante el método drawRect() que recibe como
parámetros la esquina superior izquierda, el ancho y el alto del
rectángulo.
- Si se desea relleno y no solo el borde se puede utilizar el método fillRect()
- Si se desea limpiar un área rectangular utilizando el color del fondo se
puede utilizar el método clearRect()
- public void drawRect(int x, int y, int ancho, int alto)
- public void fillRect(int x, int y, int ancho, int alto)
- public void clearRect(int x, int y, int ancho, int alto)
|
34
|
|
35
|
|
36
|
|
37
|
- La clase Graphics cuenta con los siguientes métodos:
- public void drawPolygon(int xPoints[], int
- yPoints[], int points)
- public void drawPolygon(Polygon p)
- public void fillPolygon(int xPoints[], int
- yPoints[], int points)
- public void fillPolygon(Polygon p)
|
38
|
|
39
|
|
40
|
|
41
|
- El arco consiste en un fragmento de un óvalo, con un ángulo de inicio y
una amplitud de arco.
- public void drawArc(int x, int y, int ancho,
- int alto, int anguloInicial,
- int anguloDelArco)
- public void fillArc(int x, int y, int ancho,
- int alto, int anguloInicial,
- int anguloDelArco)
|
42
|
|
43
|
|
44
|
|
45
|
- Un contexto gráfico tiene también asociado un “font” o fuente de texto.
- Para dibujar texto se utiliza el método:
- drawString(String, int, int)
- // Clase Graphics.
- Los parámetros corresponden al texto y coordenadas de la esquina
inferior izquierda del texto, o inicio del renglón sobre el que se
escribe.
|
46
|
- La clase Font permite manipular el tipo, el estilo y el tamaño de la
letra.
- El tipo se refiere al String que describe el nombre de la fuente. Por
ejemplo: “Serif”, “Monospaced”, “SansSerif”.
- El estilo puede ser:
- Font.BOLD, (negrita).
- Font.PLAIN, (normal).
- Font.ITALIC, (cursiva).
- El tamaño de la letra es medido en pixeles.
|
47
|
- Ejemplos de instancias de tipo Font:
- Font(“Serif”, Font.BOLD, 12);
- Font(“Monospaced”,
- Font.ITALIC + Font.BOLD, 24);
- Font(“SansSerif”, Font.PLAIN, 14);
- Los métodos para de Graphics para
asignar un nuevo Font es el siguiente:
- public void setFont(Font fuente);
|
48
|
|
49
|
|
50
|
|
51
|
|
52
|
|