En los posts anteriores vimos como dibujar figuras geométricas, ahora vamos a ver como rellenarlas con colores, para ello vamos a utilizar las siguientes clases y métodos:
El método setPaint establece como
parámetro un color, color tiene cuatro clases abstractas blue, red, green y yellow.
Para pintar el color de fondo y el de delante se utiliza dos métodos que
heredan de JPanel, para verlo con más claridad, como siempre, es a
través de la práctica, nos creamos una nueva clase cuyo código completo es el
siguiente:
package swing;
import java.awt.*;
import
java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import
java.awt.geom.Rectangle2D;
import javax.swing.*;
public class TrabajandoColor
{
public static void main(String[] args) {
MarcoConColor mimarco=new
MarcoConColor();
mimarco.setVisible(true);
mimarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class MarcoConColor
extends JFrame{
public MarcoConColor()
{
setTitle("Prueba
con colores");
setSize(400, 400);
LaminaConColor milamina =new
LaminaConColor();
add(milamina);
}
}
class LaminaConColor
extends JPanel{
public void
paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2=(Graphics2D) g;
Rectangle2D rectangulo=new
Rectangle2D.Double(100, 100, 200, 150);
g2.draw(rectangulo);
Ellipse2D elipse = new
Ellipse2D.Double();
elipse.setFrame(rectangulo);
g2.draw(elipse);
}
}
Es un código que ya hemos visto en los últimos apartados. Si probamos:
Lo que vamos a rellenar de color es la elipse, el
rectángulo y el fondo.
Utilizamos la instancia de Graphics2D para el método setPaint
y le vamos a pasar un parámetro que va ser el color:
public void
paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2=(Graphics2D) g;
Rectangle2D rectangulo=new Rectangle2D.Double(100,
100, 200, 150);
g2.setPaint(Color.RED);
g2.draw(rectangulo);
Ellipse2D elipse = new
Ellipse2D.Double();
elipse.setFrame(rectangulo);
g2.draw(elipse);
}
Probamos:
Lo que nos ha pintado ha sido el trazo, lo
que queremos es que nos lo rellene. Así que en lugar de utilizar el
método draw que nos dibuja tenemos que sustituirlo por el
método fill:
public void
paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2=(Graphics2D) g;
Rectangle2D rectangulo=new
Rectangle2D.Double(100, 100, 200, 150);
g2.setPaint(Color.RED);
g2.fill(rectangulo);
Ellipse2D elipse = new
Ellipse2D.Double();
elipse.setFrame(rectangulo);
g2.draw(elipse);
}
Probamos:
Ahora vamos a hacer lo mismo con la elipse:
public void
paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2=(Graphics2D) g;
Rectangle2D rectangulo=new
Rectangle2D.Double(100, 100, 200, 150);
g2.setPaint(Color.RED);
g2.fill(rectangulo);
Ellipse2D elipse = new Ellipse2D.Double();
elipse.setFrame(rectangulo);
g2.setPaint(Color.BLUE);
g2.fill(elipse);
}
Probamos de nuevo:
Si queremos utilizar los colores más personalizados
podemos utilizar el sistema RGB de la siguiente forma:
public void
paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2=(Graphics2D) g;
Rectangle2D rectangulo=new
Rectangle2D.Double(100, 100, 200, 150);
g2.setPaint(Color.RED);
g2.fill(rectangulo);
Ellipse2D elipse = new
Ellipse2D.Double();
elipse.setFrame(rectangulo);
g2.setPaint(new
Color(0, 160, 255));
g2.fill(elipse);
}
Ejecutamos:
Hay otros dos métodos brighter() y darker() para
dar más brillo o más oscuridad al color, se utiliza de la siguiente forma, para
los dos métodos es lo mismo:
g2.setPaint(new Color(0, 160,
255).brighter().brighter());
Se puede utilizar varias veces, si vemos el resultado:
Otra forma de crear el color es creando
una instancia de la clase Color
public void
paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2=(Graphics2D) g;
Rectangle2D rectangulo=new
Rectangle2D.Double(100, 100, 200, 150);
g2.setPaint(Color.RED);
g2.fill(rectangulo);
Ellipse2D elipse = new
Ellipse2D.Double();
elipse.setFrame(rectangulo);
Color micolor = new Color(20, 130, 155);
g2.setPaint(micolor);
g2.fill(elipse);
}
Para el color del fondo de la lámina vamos a la
clase MarcoConColor y en el constructor escribimos la
siguiente instrucción:
milamina.setBackground(Color.PINK);
Si probamos:
Podemos establecer el fondo de forma predeterminada
cogiendo el color del sistema:
milamina.setBackground(SystemColor.window);
Probamos de nuevo:
4.4.4 Ellipsed2D << >> 4.6 TRABAJANDO CON FUENTES
No hay comentarios:
Publicar un comentario