Ejemplos java y C/linux

Tutoriales

Enlaces

Licencia

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Para reconocer la autoría debes poner el enlace https://old.chuidiang.org

Librería gráfica en Java

Aquí hay el inicio de una librería gráfica en java. Aunque ya es más o menos utilizable, está incompleta y pienso ir ampliándola. Está pensada de forma que se pueda ampliar fácilmente, así que puedes ir metiendo tus propios ObjetosGraficos o haciendo los retoques que creas necesarios. En esta página voy a comentar un poco la idea de cómo está pensada la librería y cómo utilizarla o ampliarla. Más abajo tienes links para bajarte la librería, sus fuentes y su documentación, así como para ver unos ejemplos:

LAS COORDENADAS DE USUARIO Y LOS PIXELS

Un problema normal en los gráficos es que nosotros queremos dibujar un gráfico con unas determinadas coordenadas (por ejemplo, una función matemática sin(x) va de 0.0 a 2*PI en el eje x y de -1 a 1 en el eje y), mientras que los ordenadores se empeñan en ofrecernos coordenadas de pixels. A las coordenadas de nuestro gráfico las llamaré coordenadas de usuario.

Para facilitar este trabaja, he creado una interface EscalaGrafica con todos (es un decir) los métodos de pintado de Graphics. Una clase hija EscalaGraficaCartesiana implementa estos metodos, pero haciendo la transformación de coordenadas. De esta forma, si en vez de dibujar directamente con Graphics, dibujamos con EscalaGraficaCartesiana, no debemos preocuparnos de transformar coordenadas de usuario en pixels.

EscalaGraficaCartesiana se inicializa pasándole cuales queremos que sean las coordenadas límite de nuestro gráfico. De esta forma, puede hacer las cuentas para transformar las coordenadas nuestras en pixels.

EscalaGrafica escala = new EscalaGraficaCartesiana();
escala.tomaExtremos (0.0, -1.0, 2*Math.PI, 1.0);

Ni en EscalaGrafica ni en EscalaGraficaCartesiana están implementados todos los métodos de Graphics. Es algo que tengo que añadir...

LOS OBJETOS GRAFICOS

He hecho también una interface ObjetoGrafico. Esta interface tiene un único método dibujate(), que recibe una EscalaGrafica. Cualquier cosa que queramos dibujar debería ser una clase que implemente esta interface. En el método dibujate() debe dibujar lo que se quiera dibujar, pero siempre en coordenadas de usuario. No debemos preocuparnos de transformar a pixels.

Como ejemplos, he creado varios ObjetoGrafico que ya están disponibles para utilizar, aunque no son demasiado sofistificados:

LOS OBSERVADORES DE RATON

He hecho una interface ObservadorRaton. Esta interface tiene el método eventoRaton(), al que se le pasa el evento de ratón y las coordenadas x,y de usuario en las que se ha producido el evento. El método debe devolver true si el tratamiento del evento hace que se necesite un repintado del gráfico y false en caso contrario.

Como ejemplos, he creado varios ObservadorRaton

EL LIENZO DE DIBUJO

Como componente de dibujo he creado un Lienzo, que hereda de JLayeredPane. Tiene dos capas de dibujo, para poder hacer un dibujo de fondo y otro por encima que normalmente es algún tipo de cursor que se mueve con el ratón. Este Lienzo se inicializa pasándole la EscalaGrafica que queramos (con sus límites de las coordendas de usuario). Admite que le añadamos todos los ObjetoGrafico que queramos. El Lienzo, cuando necesite repintado, llamará a todos los dibujate() de los ObjetoGrafico que tiene en su interior y presentará el dibujo en pantalla.

Lienzo lienzo = new Lienzo();
lienzo.tomaEscala (escala);

Histograma histograma = new Histograma (...);
lienzo.tomaObjetoGrafico(histograma);

BOTONES DE ZOOM

He hecho un boton de zoom que permite acercar o alejar el gráfico. Se les inicializa pasándoles la misma EscalaGrafica que se pasa al Lienzo y el porcenaje de acercamiento o alejamiento que se desea cada vez que se pulse.

ZoomPorcentaje acercar = new ZoomPorcentaje (escala, 10);
ZoomPorcentaje alejar = new ZoomPorcentaje (escala, -10);

Es fácil implementar (y lo haré) unos botones de zoom inicial y zoom previo.
 

INTENCIONES FUTURAS

Más abajo tienes tanto el jar como los fuentes. Si haces alguna modificación interesante, añades alguna funcionalidad o corriges algún error, por favor, envíamela y la añadiré en esta página.
 

VAMOS A BAJARLA

    En chgraf.jar tienes el jar con las clases.
    En fuentes.zip tienes los fuentes de las clases.
    En javadoc.zip tienes la documentación de las clases. También puedes verla en línea.
    Los fuentes con los ejemplos los tienes en ejemplos.zip.

Estadísticas y comentarios

Numero de visitas desde el 4 Feb 2007:

Aviso Legal