Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual Técnico
Manual Técnico
“Trazo de círculos”
En el proyecto creado en NetBeans TrazarCirculo, se crearon cuatro clases, las cuales son:
HerramientasLineas.java
LienzoDibujo.java
PanelLienzoDibujo.java
Main.java
/*Declaración de librerias*/
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.awt.image.WritableRaster;
/*Declaración de variables*/
private static BufferedImage imagen;
private static WritableRaster raster;
private static int alto;
private static int ancho;
/*Se crean variables locales que sera utilizadas por este método para hacer
operaciones pertinentes de mismo*/
float dt,cc,cs,x,y,t; int tx,ty;
dt=(float)1/r;
cc=(float)Math.cos(dt); cs=(float)Math.sin(dt);
x=0; y=r;
while(y>=Math.abs(x))
{
/*Se crea una condicion de tipo while par air hacienda validaciones*/
while(y>x)
{
putPixel(xc+x,yc+y,0);
putPixel(xc-x,yc+y,0);
putPixel(xc+x,yc-y,0);
putPixel(xc-x,yc-y,0);
putPixel(xc+y,yc+x,0);
putPixel(xc+y,yc-x,0);
putPixel(xc-y,yc+x,0);
putPixel(xc-y,yc-x,0);
if(p<0)
p+=2*x+3;
else
{
p+=2*(x-y)+5; y--;
}
x++;
/*Regresa la imagen*/
return imagen;
}
int [] colors = {
255,255,255,255
};
imagen.getRaster().setPixel(x,(int) (imagen.getHeight() - 1 -
y),colors);
}
}
El siguiente código es el de LienzoDibujo.java, se detalla su contenido:
/*Declaración de las librerias importadas*/
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import javax.swing.*;
public LienzoDibujo () {
super ("Dibujo de circulos");
setSize (800,600);
cargarComponentes();
setDefaultCloseOperation (EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
/*Creacion del método cargarComponentes*/
/*Aqui se crean los componentes visuales con sus oyentes para los eventos*/
CirculoDirecto.addActionListener(this);
CirculoIncremental.addActionListener(this);
CirculoBresenham.addActionListener(this);
dibujarCirculo.add(CirculoDirecto);
dibujarCirculo.add(CirculoIncremental);
dibujarCirculo.add(CirculoBresenham);
barra.add(dibujarCirculo);
setJMenuBar(barra);
panel = new PanelLienzoDibujo(800,600);
add(panel);
/*Se crea la clase actionPerformed que es fundamental para poder realizar los
eventos. En esta clase, se contemplan todos los eventos que van a suceder
dentro de nuestra ventana, por ejemplo, al presionar alguno de los botones de
la lista, el oyente que esta implementado dará la notificación a la clase y
esta llama a este método con las condicionales que tiene*/
HerramientasLineas.setMedidas(800,600);
BufferedImage imagen = HerramientasLineas.directo(xc, yc, r);
panel.setImagen(imagen);
panel.repaint();
repaint();
}
/*Si se oprime la opcion dibujar circulo con algoritmo incremental*/
if (e.getSource() == CirculoIncremental) {
int xc = Integer.parseInt (JOptionPane.showInputDialog ("Inserte la x del
origen"));
int yc = Integer.parseInt (JOptionPane.showInputDialog ("Inserte la y del
origen"));
int r = Integer.parseInt (JOptionPane.showInputDialog ("Inserte el radio"));
HerramientasLineas.setMedidas(800,600);
BufferedImage imagen = HerramientasLineas.incremental(xc, yc, r);
panel.setImagen(imagen);
panel.repaint();
repaint();
}