Un paint en Java
Aquí tienes un pequeño applet de ejemplo de un paint
en java. Como merece una pequeña explicación, me
explayo detrás del applet. Puedes elegir el color y pintar arrastrando
con el ratón. Si marcas "arrastrar", podrás arrastrar
con el ratón los trazos que has dibujado. Funciona con java
1.5
UNA PEQUEÑA EXPLICACIÓN
Tienes los fuentes necesarios para el paint, sin la barra de herramientas
de arriba, en paint.zip. El main o applet para ver
lo que ves arriba, barra de herramientas incluida, lo tienes en pruebapaneles.zip
Este pequeño paint merece la pena fijarse en algunas cosas.
- El paint en sí no es más que una clase PanelPaint
que hereda de Canvas. Guarda dentro una LinkedList
de clases Trazo. Cada una de estas clase es una lista de
puntos y un color. Estos Trazo son los que se dibujan en
el método paint(Graphics) de PanelPaint.
- Hay una clase ListenerArrastre que implementa MouseMotionListener.
Esta clase es la que detecta el arrastre del ratón, pero no hace nada.
Admite que se le pasen clases que implementen InterfaceArrastrarRaton,
que es a las que avisará y las que realmente harán algo en el
arrastre.
- Hay dos clases que implementan InterfaceArrastrarRaton.
- PintaTrazo se encarga de crear un nuevo trazo según
se arrastra el ratón
- ArrastraTrazo se encarga de arrastrar un trazo existente
cuando se arrastra el ratón.
- Este mecanismo hace el PanelPaint ampliable en funcionalidad.
Podemos hacer, por ejemplo, clases que implemente InterfaceArrastrarRaton
que agranden o deformen los trazos y se pueden añadir fácilmente.
Incluso pintar rectángulos si suponemos que son Trazo
con cinco puntos (el primero y el último coinciden).
Resumiendo, lo que hay más o menos funciona, no tiene demasiadas
funcionalidades, pero se puede ampliar con relativa facilidad. Se pueden
hacer más cambios para mejorarlo, pero de momento no tengo intención
de hacerlos. Algunos son:
- Los Trazo deberían implementar algún
tipo de interface (por ejemplo, InterfaceGrafico), de
esta forma sería posible hacer más tipos de objetos que
no sean Trazo: rectángulos, círculos, etc.
Deberían implementar métodos de dibujate(Graphics),
si ante un click de ratón se consideran seleccionados para hacer
algo con ellos, etc.
- Posibilidad de pasar InterfaceArrastrarRaton desde
fuera.
- Posibilidad de salvar y recuperar de fichero el dibujo.
- Posibilidad de eliminar un Trazo del dibujo.
- y todo lo que imagines...
Estadísticas y comentarios
Numero de visitas desde el 4 Feb 2007:
- Esta pagina este mes: 4
- Total de esta pagina: 64099
- Total del sitio: 39900565