1/8/10

Introducción a Java2D

La API Java2D  nos permite tratar figuras, imagenes y texto en dos dimensiones, las posibilidades son casi ilimitadas, desde dibujar figuras basicas (cuadrados, lineas, texto), manipulacion de imagenes e incluso crear animaciones o presentaciones multimedia.

java.awt.Graphics2D: API de java que se extiene de AWT.Graphics

Comenzaremos con una aplicacion sencilla, para esto creamos un nuevo proyecto en Netbeans, "Java2d_Rectangulo" o el nombre que desees, despues añade un JFrame y para poder trabajar con java2d lo primero que debemos hacer es sobreescribir el metodo PAINT, el codigo que debes añadir al Jframe es:


01  @Override
02     public void paint (Graphics g) {
03         //creamos el objeto a dibujar
04         Rectangle2D rectangulo;
05         //pasamos el objeto Graphics a Graphics2D (upcasting)
06         Graphics2D g2 = (Graphics2D)g;
07         
08         /* Rectangulo simple con valores default de java2d */
09         rectangulo = new Rectangle2D.Float(50, 50, 300, 25);
10         g2.draw(rectangulo);
11         
12         /* Rectangulo con borde a color */
13         g2.setColor(Color.GREEN);
14         rectangulo = new Rectangle2D.Float(50, 100, 300, 25);
15         g2.draw(rectangulo);
16         
17         /* Rectangulo con borde a color y tipo de linea mas gruesa */
18         g2.setColor(Color.RED);
19         rectangulo = new Rectangle2D.Float(50, 150, 300, 25);       
20         Stroke pincel = new BasicStroke(5.0f, BasicStroke.CAP_ROUND,
21                             BasicStroke.JOIN_MITER);
22         g2.setStroke(pincel);        
23         g2.draw(rectangulo);
24         
25         /* Rectangulo con relleno  */        
26         g2.setColor(Color.DARK_GRAY);
27         rectangulo = new Rectangle2D.Float(50, 200, 300, 25);        
28         g2.fill(rectangulo);
29                 
30         /* Rectangulo con canal alfa */
31         // dibujamos un rectangulo de color amarillo y encima otro de color rojo
32         // sin transparencia        
33         g2.setColor(Color.YELLOW);
34         rectangulo = new Rectangle2D.Float(150, 240, 100, 50);       
35         g2.fill(rectangulo);
36         g2.setColor(Color.BLACK);
37         rectangulo = new Rectangle2D.Float(150, 240, 100, 50);       
38         g2.draw(rectangulo);
39         g2.setColor(Color.RED);
40         rectangulo = new Rectangle2D.Float(50, 250, 300, 25);                               
41         g2.fill(rectangulo);
42         
43         //aplicando transparencia
44         g2.setColor(Color.YELLOW);
45         rectangulo = new Rectangle2D.Float(150, 310, 100, 50);       
46         g2.fill(rectangulo);
47         g2.setColor(Color.BLACK);
48         rectangulo = new Rectangle2D.Float(150, 310, 100, 50);       
49         g2.draw(rectangulo);        
50         g2.setColor(Color.RED);
51         rectangulo = new Rectangle2D.Float(50, 320, 300, 25);                       
52         AlphaComposite ac = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f);                     
53         g2.setComposite(ac);
54         g2.fill(rectangulo);
55         
56         /* por ultimo dibujamos un texto */
57         g2.setColor(Color.GREEN);
58         g2.setFont(new Font("Arial", Font.ITALIC, 24));
59         g2.drawString("Java2D by Mouse", 50, 440);
60 }
Las librerias que hacemos uso son:


01 import java.awt.*;
02 import java.awt.geom.*;
03 import java.awt.image.*;
Como se observa en el codigo, sobreescribimos el metodo PAINT con la instruccion @Override, despues pasamos el objeto Graphics a Graphics2d, y ya podemos comenzar a dibujar los objetos que deseemos.

La imagen de arriba, nos muestra el resultado que obtendremos, para esto hicimos uso del objeto Rectangle2D que nos permite dibujar rectangulos.

Parametros del objeto Rectangle2D(x1,y1,x2,y2)

x1,y1 : especifican la posicion de la esquina Sup. Izq.
x2,y2 : representan el ancho y largo


Tambien haremos uso de los metodos:

draw(): metodo que pinta la figura que se le pasa como parametro
fill(): metod igual al amterior, pero este pinta el relleno
setColor(): nos permite colocar un color a los graficoscon
Stroke : Estable un pincel con el cual pintaremos el contorno de los objetos.
AlphaComposite: Gestiona las transparencias en figuras, texto e imagenes.

drawString(): nos permite dibujar letras

estos objetos y metodos y muchos mas, los veremos en proximos tutoriales.

[actualizado]
Me olvide el codigo fuente ;)
aqui esta

Click para descargar

1 comentario:

  1. Hola Hola .. oie me prodrias ayudar necesito saber como pintar sobre una imagen.. estoy desarrollando una aplicacion en netbeans de maquillaje pero no se como pintar sobre la imagen.... por fii.. un empujonsitoO solamente ..

    ResponderEliminar