[código] Programación en Java - Gráficos y Java2D (3)
(anterior) En esta sección de tratan los contextos y objetos gráficos; el dibujo de cadenas, caracteres y bytes; el control de color y tipo de letra; la manipulación de la pantallas, los modos de pantalla y el dibujo de lÃneas, rectángulos, rectángulos redondeados, rectángulos tridimensionales, óvalos, arcos y polÃgonos. Se presenta la API de Java2D, la cual ofrece poderosas herramientas para gráficos.
Dibujo de arcos (drawArc)

// Dibujo de arcos.
import java.awt.*;
import javax.swing.*;
public class DibujarArcos extends JFrame {
// establecer cadena de barra de tÃtulo y dimensiones de la ventana
public DibujarArcos()
{
super( "Dibujo de arcos" );
setSize( 300, 170 );
setVisible( true );
}
// dibujar rectángulos y arcos
public void paint( Graphics g )
{
super.paint( g ); // llamar al método paint de la superclase
// empezar en 0 y extenderse hasta 360 grados
g.setColor( Color.YELLOW );
g.drawRect( 15, 35, 80, 80 );
g.setColor( Color.RED );
g.drawArc( 15, 35, 80, 80, 0, 360 );
// empezar en 0 y extenderse hasta 110 grados
g.setColor( Color.YELLOW );
g.drawRect( 100, 35, 80, 80 );
g.setColor( Color.RED );
g.drawArc( 100, 35, 80, 80, 0, 110 );
// empezar en 0 y extenderse hasta -270 grados
g.setColor( Color.YELLOW );
g.drawRect( 185, 35, 80, 80 );
g.setColor( Color.RED );
g.drawArc( 185, 35, 80, 80, 0, -270 );
// empezar en 0 y extenderse hasta 360 grados
g.fillArc( 15, 120, 80, 40, 0, 360 );
// empezar en 0 y extenderse hasta -90 grados
g.fillArc( 100, 120, 80, 40, 270, -90 );
// empezar en 0 y extenderse hasta -270 grados
g.fillArc( 185, 120, 80, 40, 0, -270 );
} // fin del método paint
// ejecutar la aplicación
public static void main( String args[] )
{
JFrame.setDefaultLookAndFeelDecorated(true);
DibujarArcos aplicacion = new DibujarArcos();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
} // fin de la clase DibujarArcos
Dibujo de PolÃgonos (Polygon, drawPolygon, drawPolyLine)

// Dibujo de polÃgonos.
import java.awt.*;
import javax.swing.*;
public class DibujarPoligonos extends JFrame {
// establecer cadena de barra de tÃtulo y dimensiones de la ventana
public DibujarPoligonos()
{
super( "Dibujo de polÃgonos" );
setSize( 275, 230 );
setVisible( true );
}
// dibujar polÃgonos y polilÃneas
public void paint( Graphics g )
{
super.paint( g ); // llamar al método paint de la superclase
int valoresX[] = { 20, 40, 50, 30, 20, 15 };
int valoresY[] = { 50, 50, 60, 80, 80, 60 };
Polygon poligono1 = new Polygon( valoresX, valoresY, 6 );
g.drawPolygon( poligono1 );
int valoresX2[] = { 70, 90, 100, 80, 70, 65, 60 };
int valoresY2[] = { 100, 100, 110, 110, 130, 110, 90 };
g.drawPolyline( valoresX2, valoresY2, 7 );
int valoresX3[] = { 120, 140, 150, 190 };
int valoresY3[] = { 40, 70, 80, 60 };
g.fillPolygon( valoresX3, valoresY3, 4);
Polygon poligono2 = new Polygon();
poligono2.addPoint( 165, 135 );
poligono2.addPoint( 175, 150 );
poligono2.addPoint( 270, 200 );
poligono2.addPoint( 200, 220 );
poligono2.addPoint( 130, 180 );
g.fillPolygon( poligono2 );
} // fin del método paint
// ejecutar la aplicación
public static void main( String args[] )
{
JFrame.setDefaultLookAndFeelDecorated(true);
DibujarPoligonos aplicacion = new DibujarPoligonos();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
} // fin de la clase DibujarPoligonos
Demostración de algunas figuras de Java2D

// Demostración de algunas figuras de Java2D.
import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import javax.swing.*;
public class Figuras extends JFrame {
// establecer cadena de barra de tÃtulo y dimensiones de la ventana
public Figuras()
{
super( "Dibujo de figuras en 2D" );
setSize( 425, 160 );
setVisible( true );
}
// dibujar figuras con la API Java2D
public void paint( Graphics g )
{
super.paint( g ); // llamar al método paint de la superclase
Graphics2D g2d = ( Graphics2D ) g; // convertir g a Graphics2D
// dibujar elipse 2D rellena con un gradiente azul-amarillo
g2d.setPaint( new GradientPaint( 5, 30, Color.BLUE, 35, 100,
Color.YELLOW, true ) );
g2d.fill( new Ellipse2D.Double( 5, 30, 65, 100 ) );
// dibujar rectángulo 2D en rojo
g2d.setPaint( Color.RED );
g2d.setStroke( new BasicStroke( 10.0f ) );
g2d.draw( new Rectangle2D.Double( 80, 30, 65, 100 ) );
// dibujar rectángulo 2D redondeado con fondo tamponado
BufferedImage buffImage = new BufferedImage( 10, 10,
BufferedImage.TYPE_INT_RGB );
Graphics2D gg = buffImage.createGraphics();
gg.setColor( Color.YELLOW ); // dibujar en amarillo
gg.fillRect( 0, 0, 10, 10 ); // dibujar un rectángulo relleno
gg.setColor( Color.BLACK ); // dibujar en negro
gg.drawRect( 1, 1, 6, 6 ); // dibujar un rectángulo
gg.setColor( Color.BLUE ); // dibujar en azul
gg.fillRect( 1, 1, 3, 3 ); // dibujar un rectángulo relleno
gg.setColor( Color.RED ); // dibujar en rojo
gg.fillRect( 4, 4, 3, 3 ); // dibujar un rectángulo relleno
// pintar buffImage en el objeto JFrame
g2d.setPaint( new TexturePaint( buffImage,
new Rectangle( 10, 10 ) ) );
g2d.fill( new RoundRectangle2D.Double( 155, 30, 75, 100, 50, 50 ) );
// dibujar arco 2D en forma de pastel, en color blanco
g2d.setPaint( Color.WHITE );
g2d.setStroke( new BasicStroke( 6.0f ) );
g2d.draw( new Arc2D.Double( 240, 30, 75, 100, 0, 270, Arc2D.PIE ) );
// dibujar lÃneas 2D en verde y amarillo
g2d.setPaint( Color.GREEN );
g2d.draw( new Line2D.Double( 395, 30, 320, 150 ) );
float guiones[] = { 10 };
g2d.setPaint( Color.YELLOW );
g2d.setStroke( new BasicStroke( 4, BasicStroke.CAP_ROUND,
BasicStroke.JOIN_ROUND, 10, guiones, 0 ) );
g2d.draw( new Line2D.Double( 320, 30, 395, 150 ) );
} // fin del método paint
// ejecutar la aplicación
public static void main( String args[] )
{
JFrame.setDefaultLookAndFeelDecorated(true);
Figuras aplicacion = new Figuras();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
} // fin de la clase Figuras
Demostración de una ruta general (GeneralPath)

// Demostración de una ruta general.
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
public class Figuras2 extends JFrame {
// establecer cadena de barra de tÃtulo, color de fondo y dimensiones de la ventana
public Figuras2()
{
super( "Dibujo de figuras 2D" );
getContentPane().setBackground( Color.RED );
setSize( 400, 400 );
setVisible( true );
}
// dibujar rutas generales
public void paint( Graphics g )
{
super.paint( g ); // llamar al método paint de la superclase
int puntosX[] = { 55, 67, 109, 73, 83, 55, 27, 37, 1, 43 };
int puntosY[] = { 0, 36, 36, 54, 96, 72, 96, 54, 36, 36 };
Graphics2D g2d = ( Graphics2D ) g;
GeneralPath estrella = new GeneralPath(); // crear objeto GeneralPath
// establecer la coordenada inicial de la ruta general
estrella.moveTo( puntosX[ 0 ], puntosY[ 0 ] );
// crear la estrella--esto no la dibuja
for ( int cuenta = 1; cuenta < puntosX.length; cuenta++ )
estrella.lineTo( puntosX[ cuenta ], puntosY[ cuenta ] );
estrella.closePath(); // cerrar la figura
g2d.translate( 200, 200 ); // trasladar el origen a (200, 200)
// girar alrededor del origen y dibujar estrellas en colores aleatorios
for ( int cuenta = 1; cuenta <= 20; cuenta++ ) {
g2d.rotate( Math.PI / 10.0 ); // girar el sistema de coordenadas
// establecer color de dibujo al azar
g2d.setColor( new Color( ( int ) ( Math.random() * 256 ),
( int ) ( Math.random() * 256 ),
( int ) ( Math.random() * 256 ) ) );
g2d.fill( estrella ); // dibujar estrella rellena
}
} // fin del método paint
// ejecutar la aplicación
public static void main( String args[] )
{
JFrame.setDefaultLookAndFeelDecorated(true);
Figuras2 aplicacion = new Figuras2();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
} // fin de la clase Figuras2








