Interfaz Grafica de Usuario - Figuras

Ya vimos como crear una ventana y como utilizar JPanel para dibujar atraves de objetos Graphics. A continuación profundizaremos en el uso de Graphics para crear figuras complejas, Antes, te presento a la clase Color del paquete java.awt. Color nos permite "crear" o mejor dicho especificar un color para algún objeto o componente. La clase color cuenta con Objetos finales para utilizar colores predefinidos como: Color.red Color.blue Color.white etc... Es posible, tan bien, especificar muchos mas colores a traves de valores RGB, dichos valores pueden ser de 0.0 a 255 o de 0 a 1.0, poniendo estos valores en el constructor de Color al crear el objejo. ej:                         Color cPersonal = new Color(255,128,0); //en este caso creamos el color naranja acá tienes una pagina con valores RBG que puedes utilizar en la creación de colores personalizados. http://www.december.com/html/spec/colordec.html También se puede agregar color a una figura directamente a través de su método "setColor" propio de objetos gráficos. a continuación veremos esto.

Creación de ovalos rellenos.

linea 1 - package especifica el paquete en el que he creado mis clases. no creo que haga falta explicar esto.
lineas 3 a 6 - las importaciones necesarias para poder dibujar y crear el contenedor tal cual hicimos en la entrada anterior. solo se ha añadido la clase Random. con la cual podemos generar números al azar entre un determinado conjunto.
la linea 10 - hacemos la sobre-escritura OBLIGATORIA del método paintComponent() para poder dibujar en el contenedor. si te fijas aparece un mensaje de advertencia del IDE (de color amarillo) este mensaje se debe a que el el método paintComponent() esta siendo sobrescrito. puedes dejarlo tal cual (el mensaje) o si te posicionas sobre el mismo te dará la opción de poner una anotación "@Override" con lo que se saldrá la advertencia. esto es solo para identificar los métodos sobrescritos. 
linea 14 - creamos un objeto Random para poder crear colores y especificar posiciones al azar.
linea 15 - creamos un for que itere 4 veces, para crear 4 óvalos.
linea 17 - mediante el parámetro de Graphics g creamos un nuevo color con valores RGB al azar mediante
numeros al azar entre 0 y 255. Para esto es necesario poner un    new Color dentro del parámetro de setColor(). y especificar tres valores numéricos. En este caso los tres valores son al azar.
linea 18 - utilizamos fillOval() método que nos permite crear un ovalo relleno del color previamente especificado.
     El metodo fillOval( ); recibe 4 argumentos; los primeros dos indican las posiciones X e Y          respectivamente y los otros dos indican el largo en X y el alto en Y.  En realidad lo que se crea es un
 cuadrado y el ovalo  se crea al dibujarlo dentro del cuadrado tocando cada centro de las rectas. de la siguiente manera : (los valores de las coordenadas son de la esquina superior derecha del cuadrado imaginario, esto se aplica a cualquier figura que creemos.)
Si te fijas, en el ejemplo puse los primeros dos argumentos como objetos Random que pueden
ser de 0 a 230, puse esos valores para que cuando se cree el ovalo no se salga de la ventana que es de ancho 300.
esta clase es igual que la que creamos en la entrada pasada. creamos una clase que herede de JFrame y especificamos los atributos básicos de la ventana. seguimos añadiendo setLotationRealativeTo(null); para que la ventana aparezca en el medio de la pantalla. también especificamos a serResizable(null) para que no pueda ser dimensionada. En el main instanciamos el objeto JFrame.y le añadimos nuestra clase Dibujos para que muestre nuestros dibujos en la ventana.
Como las `posiciones y colores de los óvalos son al azar, cada vez que ejecutemos nuestra clase tendrá resultados diferentes.
Ahora para probar un curioso y atractivo efecto, haz lo siguiente. Pon después de la llave de cierre del for una llamada al método repaint( ); el efecto te agradara.

Otros métodos de Graphics 

- fillRoundRect (int x, int y, int anchura, int altura, int anchuraArco, int alturaArco);
     Dibuja un rectángulo relleno con esquinas redondeadas, en el color que este especificado, con el ancho y      la altura especificados. los valores de anchuraArco y alturaArco determinan el grado de redondez de las        esquinas.
- draw3DRect (int x, int y, int anchura, int altura, boolean b);
    Dibuja un rectángulo tridimensional relleno en caso de que el argumento booleano sea true, 
- clearRect();
   Dibuja un rectángulo relleno con el color de fondo actual. lo que permite eliminar (mejor dicho cubrir) áreas especificas de una  imagen.
Esta es otra aplicación que utiliza figuras para crear un "smile", solo se ha modificado la clase Dibujos.
-nota que el color se ha añadido mediante el metodo setColor y se ha especificado colores solidos (declarados como finales en la clase Color.).
-Para la boca se utilizaron dos ovalos, primero uno negro y luego uno amarillo levemente mas arriba para cubrir la mayor parte del negro dejando asi solo una linea como sonrisa.
nota que los métodos fill y en general cualquiera que pueda utilizar colores toma el color que se haya especificado antes, hasta que se indique otro.

Ejercicio propuesto:::

Crea la siguiente figura utilizando solo drawLine();
Como ayuda, te sirve tener el alto y el ancho mediante los metodos getWidth(); getHeight(); y de alli comenzar a restarle a los lados.
Tambien puedes crear unas lineas centrales para guiarte y después quitarlas.

1 comentario:

Alguna consulta, dato, reclamo o donacion1313?