0% encontró este documento útil (0 votos)
155 vistas9 páginas

Dibujo de Figuras con Java 2D

Este documento describe cómo dibujar diferentes figuras geométricas como líneas, cuadrados, rectángulos y círculos utilizando la clase Graphics2D en Java. Explica los métodos drawLine(), drawRect(), fillRect(), drawOval() y fillOval() y sus parámetros para dibujar estas figuras. También cubre otros métodos como drawString() para dibujar texto y setColor() para cambiar el color. El documento incluye código de ejemplo de un applet que permite al usuario dibujar estas figuras.

Cargado por

Fredidi Same
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
155 vistas9 páginas

Dibujo de Figuras con Java 2D

Este documento describe cómo dibujar diferentes figuras geométricas como líneas, cuadrados, rectángulos y círculos utilizando la clase Graphics2D en Java. Explica los métodos drawLine(), drawRect(), fillRect(), drawOval() y fillOval() y sus parámetros para dibujar estas figuras. También cubre otros métodos como drawString() para dibujar texto y setColor() para cambiar el color. El documento incluye código de ejemplo de un applet que permite al usuario dibujar estas figuras.

Cargado por

Fredidi Same
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

14th June 2010 Java 2D

Java 2D

En java existe la clase Graphics para el manejo de graficos ya sea dibujar lineas,
cuadrados, circulos, etc. Tambien existe la clase Graphics2D la cual hereda de
Graphics pero esta contiene metodos que no posee su superclase. Aqui vamos a
trabajar con la clase Graphics2D, ahora vamos a ver como hacer lineas,
cuadrados, rectangulos, circulos, y algunas otras figuras mas.

Imágenes

[http://1.bp.blogspot.com/_73t-
OXs9bAc/TTi6pxvT6bI/AAAAAAAAAOc/TVAXL7aaUzM/s1600/graficos1.png]

[http://2.bp.blogspot.com/_73t-OXs9bAc/TTi6qEjZ67I/AAAAAAAAAOg/gzS0-
QrV6Cw/s1600/graficos2.png]
[]

Lineas

Para poder dibujar una linea se necesitan cuatro parametros, que son la posicion X
y Y del punto inicial y la posicion X y Y del punto final. Para dibujar una linea se usa
el metodo drawLine, su estructura es la siguiente:

g2d.drawLine(int x1, int y1, int x2, int y2);

g2d es un objeto de Graphics2D.

Cuadrados y Rectangulos

Para dibujar cuadrados o rectangulos se usa el mismo metodo, el cual recibe


cuatro parametros, el primero es el valor de X del punto incial, el segundo el valor
de Y del punto inicial, el tercero el valor del ancho del cuadrado o rectangulo, y el
cuarto el valor del alto del cuadrado o rectangulo. El metodo es el drawRect de la
clase Graphics, ademas existe la posibilidad de hacer un cuadrado o un rectangulo
relleno, esto se hace con el metodo fillRect de la misma clase. La estructura de
estos dos metodos es la siguiente:

g2d.drawRect(int x, int y, int ancho, int alto);


g2d.fillRect(int x, int y, int ancho, int alto);

g2d es un objeto de Graphics2D.

Circulos

Para dibujar circulo o ovalos, se usa el metodo drawOval de la clase Graphics, este
metodo recibe cuatro parametros, los dos primeros son el valor de X y Y del punto
inicial, el tercero es el valor ancho y el cuarto el valor del alto. Tambien se pueden
dibujar circulos rellenos, con el metodo fillOval de la clase Graphics. La estructura
de estos deos metodo es la siguiente:

g2d.drawOval(int x, int y, int ancho, int alto);


g2d.fillOval(int x, int y, int ancho, int alto);

g2d es un objeto de Graphics2D.

Otras Métodos de la clase Graphics y Graphics2D

Ademas de los métodos mencionados anteriormente, estas dos clases nos


proporcionan métodos para cambiar el color de las lineas, dibujar texto, polígonos,
arcos, cambiar la fuente de los textos, etc. Ahora veremos la estructura y una
pequeña explicación de los métodos mencionados:

g2d.drawString(String texto, int x, int y);


g2d.drawString(String texto, float x, float y);

Estos dos métodos dibujan un texto en la posición que se indica con el valor de X y
en Y.

g2d.drawRoundRect(int x, int y, int ancho, int alto, int diametrohorizontal, int


diametrovertical);

Esto nos dibuja un rectangulo o cuadrado con esquinas redondeadas, para esto
hay que mandarle el valor de X y Y del punto inicial, el valor del ancho y alto, y el
diametro horizontal y vertical para poder crear las puntas redondeadas.

g2d.drawPolygon(int x[], int y[], int numerodepuntos);

Esto dibuja un poligono, hay que mandarle un array o un vector, con los puntos en
X y Y, y el numero de puntos.

g2d.setColor(Color color);

Esto modifica el color para dibujar o rellenar.

g2d.setFont(Font letra);

Esto modifica el tipo de letra del texto a dibujar.

g2d.setArc(int x, int y, int ancho, int alto, int anguloinicio, int anguloarco);

Esto dibuja un arco, hay que mandarle el valor de X y Y del punto inicial, el alto, el
ancho, el angulo de inicio y por ultimo el angulo del arco.

Applet

Este Applet nos muestra algunos de los metodos de la clase Graphics2D,


seleccionas la figuras que deseas dibujar y luego haces clic en la parte de abajo y
arrastras hasta donde desees que termine la figura.

Codigo del Applet

Clase Principal

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class Principal extends JApplet {

PanelDibujo pd;
JRadioButton linea;
JRadioButton cuadrado;
JRadioButton rectangulo;
JRadioButton circulo;

public void init(){

setLayout(new BorderLayout());
pd=new PanelDibujo(this);
JPanel panelBotones=new JPanel();
linea=new JRadioButton("Linea");
cuadrado=new JRadioButton("Cuadrado");
rectangulo=new JRadioButton("Rectangulo");
circulo=new JRadioButton("Circulo");
linea.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
pd.setForma(1);
pd.setX1(0);
pd.setX2(0);
pd.setY1(0);
pd.setY2(0);
pd.setAncho(0);
pd.setAlto(0);
pd.repaint();
repaint();
}
});
cuadrado.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {


pd.setForma(2);
pd.setX1(0);
pd.setX2(0);
pd.setY1(0);
pd.setY2(0);
pd.setAncho(0);
pd.setAlto(0);
repaint();
}
});
rectangulo.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {


pd.setForma(3);
pd.setX1(0);
pd.setX2(0);
pd.setY1(0);
pd.setY2(0);
pd.setAncho(0);
pd.setAlto(0);
repaint();
}
});
circulo.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {


pd.setForma(4);
pd.setX1(0);
pd.setX2(0);
pd.setY1(0);
pd.setY2(0);
pd.setAncho(0);
pd.setAlto(0);
repaint();
}
});
ButtonGroup grupo=new ButtonGroup();
grupo.add(linea);
grupo.add(cuadrado);
grupo.add(rectangulo);
grupo.add(circulo);
panelBotones.add(linea);
panelBotones.add(cuadrado);
panelBotones.add(rectangulo);
panelBotones.add(circulo);
add(panelBotones,BorderLayout.NORTH);
add(pd,BorderLayout.CENTER);
}
}

Esta clase es la que declara los radio botones, y un ButtonGroup para evitar que se
seleccionen mas de un boton. Al ser seleccionado algun boton este le dice al panel
que debe dibujar.

Clase PanelDibujo

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.JPanel;
public class PanelDibujo extends JPanel {

int x1;
int y1;
int x2=0;
int y2=0;
int ancho;
int alto;
int forma=0;
Principal p;

public PanelDibujo(Principal prin){


p=prin;
setDoubleBuffered(true);
MouseListener ml=new MouseListener() {

public void mouseReleased(MouseEvent e) {


}

public void mousePressed(MouseEvent e) {


x1=e.getX();
y1=e.getY();
}

public void mouseExited(MouseEvent arg0) {


}

public void mouseEntered(MouseEvent arg0) {


}

public void mouseClicked(MouseEvent e) {


}
};
MouseMotionListener mml=new MouseMotionListener() {

public void mouseMoved(MouseEvent e) {


}

public void mouseDragged(MouseEvent e) {


x2=e.getX();
y2=e.getY();
ancho=e.getX()-78;
alto=e.getY()-76;
p.repaint();
repaint();

}
};
addMouseListener(ml);
addMouseMotionListener(mml);
}

public void paintComponent(Graphics g){


super.paintComponents(g);
Graphics2D g2d=(Graphics2D)g;
if(forma==1){
g2d.drawLine(x1, y1, x2, y2);
}
if(forma==2){
g2d.drawRect(x1, y1, ancho, ancho);
}
if(forma==3){
g2d.drawRect(x1, y1, ancho, alto);
}
if(forma==4){
g2d.drawOval(x1, y1, ancho, alto);
}
}

public int getX1() {


return x1;
}

public void setX1(int x1) {


this.x1 = x1;
}

public int getY1() {


return y1;
}

public void setY1(int y1) {


this.y1 = y1;
}

public int getX2() {


return x2;
}

public void setX2(int x2) {


this.x2 = x2;
}

public int getY2() {


return y2;
}

public void setY2(int y2) {


this.y2 = y2;
}
public int getAncho() {
return ancho;
}

public void setAncho(int ancho) {


this.ancho = ancho;
}

public int getAlto() {


return alto;
}

public void setAlto(int alto) {


this.alto = alto;
}

public int getForma() {


return forma;
}

public void setForma(int forma) {


this.forma = forma;
}
}

Esta clase lo que hace es crear un panel personalizado, el cual es el encargado de


dibujar las figuras. Como se puede observar esta clase usa los metodos para
dibujar una linea, cuadrado, rectangulo y circulo.

Posted 14th June 2010 by Anonymous


Labels: Figuras en java, java2D

3 Algún comentario?

Anonymous 2 de septiembre de 2010, 10:07


Muy interesante tu explicacion me quedo una duda como se modifica el alto y
el ancho de un triangulo dibujado a punta de g.drawline..
y mas a un si yo no lo quiero modificar desde el codigo si no que el usuario lo
aga .
Reply

Anonymous 13 de septiembre de 2010, 12:16


Ya publique un Applet que hace exactamente lo que me estas preguntando. Si
tienes otra duda avisame.
Reply

Anonymous 22 de mayo de 2011, 11:19


Yo lo que quería era dibujar todas las relaciones que utiliza UML, ósea que en
las puntas de las líneas se pueda diferenciar: la flecha de dependencia,
composición, agregación y herencia. Se puede hacer con Java2D??? me
podrías ayudar con un ejemplito???

Muchas gracias de antemano.


Reply

Introduce tu comentario...

Comentar como: ACTIVIDAD ET Cerrar sesión

Publicar Vista previa Avisarme

También podría gustarte