Un ejemplo de uso de la librería gráfica.
En unos ejes x,y vamos a dibujar una unos peces paseándose. Para
ello usamos el GraficoSimbolos, al que se le pasa un array de imagenes,
un array de etiquetas y las posiciones para cada imagen. Haremos además
que los peces se muevan cada medio segundo.
Como objetos gráficos adicionales, añadiremos una mano que
permite arrastrar el gráfico con el botón derecho del ratón,
una botonería de zoom para acercar y alejar el gráfico, así
como un zoom con el ratón, arrastrando con el botón izquierdo.
Nota: Las imágenes de los peces las he bajado de http://www.iconbazaar.com y no puedo distribuirlas, así que desde aquí no te las puedes descargar.
|
El gráfico se inicializa como un gráfico x,y con la x entre -100 y 100 y la y entre -100 y 100. Aprovechamos para ponerle también un marco de color gris.
lienzo = new Lienzo();
lienzo.setBackground(Color.black);
eg = new EscalaGraficaCartesiana();
eg.tomaExtremos(-100.0, -100.0, 100.0, 100.0);
lienzo.tomaEscala(eg);
lienzo.setMargenes(10, 10, 10, 20);
lienzo.setColorMarco(Color.GRAY);
lienzo.setPintarMarco(true);
Se le añade un objeto gráfico que es el que pinta los peces. Lo inicializamos con un array de cinco imágenes de peces, cinco etiquetas y cinco posiciones aleatorias entre -75 y 75 para x e igual para y.
puntos = new Point2D.Double[numeroPeces];
etiquetas = new String[numeroPeces];
for (int i = 0; i < numeroPeces; i++)
{
puntos[i] = new Point2D.Double(Math.random() *
150 - 75, Math.random() * 150 - 75);
etiquetas[i] = "Pez_" + i;
}
gs = new GraficoSimbolos(puntos, imagenes, etiquetas);
lienzo.tomaObjetoGrafico(gs);
Se le añaden otros objetos gráficos
// La Mano permite arrastrar
el gráfico con el botón derecho del ratón
Mano mano = new Mano(eg, lienzo);
lienzo.anhadeObservadorRaton(mano);
// El CursorZoom permite hacer zoom arranstrando
con el botón izquierdo del ratón
CursorZoom cursor = new CursorZoom();
lienzo.anhadeObservadorRaton(cursor);
// Unas líneas vertical y horizontal
que se mueve junto con el ratón.
CursorHilo cursor2 = new CursorHilo(true, true);
lienzo.anhadeObservadorRaton(cursor2);
Y esto es todo. Tienes disponible lo siguiente: