Debe introducir al menos 3 caracteres en el buscador.
Inicio / Wikis / Cursos gratis / Java partiendo de Cero - Nuestro Canvas a medida

Java partiendo de Cero - Nuestro Canvas a medida

 ****- (61 opiniones)
Copyright Curso gratis de Jorge Bourdette - 26 de Agosto de 2005
Temas Relacionados: JavaProgramación web
55. Nuestro Canvas a medida
Como no vamos a tomar ninguna acción especial al crear el canvas, no hemos definido el constructor (se utiliza el constructor por defecto de la clase Canvas).

Simplemente hemos redefinido algunos métodos para actuar al presionar, arrastrar y soltar el mouse, para redibujar el área de dibujo (canvas) y para recortar el rectángulo dibujado si nos vamos con el mouse fuera del espacio que ocupa el canvas.

La variable global rectActual, de la clase Rectangle, contendrá las coordenadas del rectángulo que estamos dibujando. El método Paint se llama automáticamente cada vez que es necesario redibujar el componente, o si llamamos explícitamente al método repaint():


public void paint(Graphics g) {
Dimension d = size();
g.setColor(Color.red);
g.drawRect(0, 0, d.width-1, d.height-1);
g.setColor(Color.blue);
if (rectActual != null) {
Rectangle box = cortarRect(rectActual, d);
g.drawRect(box.x, box.y, box.width-1, box.height-1);
}
}

En primer lugar le asignamos a una variable d el tamaño del canvas usando el método size(), luego elegimos un color (rojo) para dibujar un borde y dibujamos un rectángulo del tamaño del componente:

Dimension d = size();
g.setColor(Color.red);
g.drawRect(0, 0, d.width-1, d.height-1);

Dos atributos de la clase Dimension, width y height, se han cargado con el tamaño del canvas y son los que usamos para dar el tamaño del rectángulo.

Luego, si se está dibujando un rectángulo (rectActual != null) simplemente lo recortamos (en caso de que hayamos arrastrado el mouse fuera del canvas) y lo dibujamos.


El método que lo recorta a los límites del canvas, cortarRect, asigna a cuatro variables las coordenadas del rectángulo (que se le pasaron como parámetro miRect al llamarlo):

int x = miRect.x;
int y = miRect.y;
int ancho = miRect.width;
int alto = miRect.height;

Si el ancho (o el alto) es negativo, simplemente lo cambia de signo y toma como coordenada x (y) de origen el otro vértice del rectángulo, que corresponderá al x que se pasó menos el ancho y más uno (recordar que el origen de coordenadas empieza en cero y no en uno). Si este vértice está fuera del canvas (x<0), lo pone en cero y le resta al ancho la parte recortada (notar que ancho+=x, como x es negativo, es en realidad una resta).

if (ancho < 0) {
ancho = -ancho;
x = x - ancho + 1;
if (x < 0) {
ancho += x;
x = 0;
}
}

Si nos vamos del área de dibujo por la derecha (o por abajo), simplemente le recortamos al ancho (alto) el exceso de modo que llegue hasta el borde del área de dibujo (que también hemos pasado al método como parámetro):

if ((x + ancho) > areaDib.width) {
ancho = areaDib.width - x;

}


Sólo nos quedan por ver los métodos que responden al mouse.

Cuando presionamos el mouse dentro del canvas, comenzamos la creación de un nuevo rectángulo de ancho y alto cero que comienza en el punto en que hemos presionado el mouse, y redibujamos el canvas:

public boolean mouseDown(Event e, int x, int y) {
rectActual = new Rectangle(x, y, 0, 0);
repaint();
return false;
}

Al mover el mouse, redimensionamos el rectángulo con ancho x menos el origen de dibujo (y alto y menos el origen de dibujo), y repintamos:

public boolean mouseDrag(Event e, int x, int y) {
rectActual.resize(x-rectActual.x, y-rectActual.y);
repaint();
return false;
}

Finalmente, al soltar el mouse, redimensionamos como antes y redibujamos:

public boolean mouseUp(Event e, int x, int y) {
rectActual.resize(x-rectActual.x, y-rectActual.y);
repaint();
return false;
}

Como no se toma ninguna medida para guardar el rectángulo dibujado, al crear uno nuevo (reasignando rectActual a un nuevo rectángulo), el anterior se pierde.

Bueno, para empezar a dibujar no está mal. Partes de este código han sido tomadas de ejemplos del Tutorial de Java del site de Sun. Al final del curso haremos una lista de bibliografía y sitios de interés para profundizar en Java, pero por ahora nos falta bastante: algo más de dibujo, manejo de excepciones, threads... Nos vemos el próximo capítulo!
Tabla de contenidos
  1. 1 - JAVA DESDE CERO
  2. 2 - Qué es Java
  3. 3 - Lenguaje de Objetos
  4. 4 - Independiente de la plataforma
  5. 5 - Algunas características
  6. 6 - El Java Development Kit
  7. 7 - EMPECEMOS DE UNA VEZ!
  8. 8 - Javascript
  9. 9 - Al fin. Java!
  10. 10 - LAS CLASES EN JAVA
  11. 11 - Estructura de una clase
  12. 12 - ESTRUCTURA DE CLASES
  13. 13 - Declaración de la clase
  14. 14 - El cuerpo de la clase
  15. 15 - EL CUERPO DE LOS MÉTODOS
  16. 16 - Declaración de variables locales
  17. 17 - Asignaciones a variables
  18. 18 - Operaciones matematicas
  19. 19 - Llamadas a métodos
  20. 20 - LAS ESTRUCTURAS DE CONTROL
  21. 21 - if.[else]
  22. 22 - Switch.case.brake.default
  23. 23 - While
  24. 24 - Do.while
  25. 25 - For
  26. 26 - Break y continue
  27. 27 - Otras...
  28. 28 - HAGAMOS ALGO...
  29. 29 - La clase Complejo
  30. 30 - Algo sobre los métodos
  31. 31 - JAVA A TRAVÉS DE LA VENTANA
  32. 32 - Nuestra primera ventana
  33. 33 - Un poco de detalle
  34. 34 - Y los eventos...
  35. 35 - UNA VENTANA CON VIDA
  36. 36 - Viajando con Java
  37. 37 - Preparando listas
  1. 38 - Agregando fechas
  2. 39 - Juntando todo hasta aquí
  3. 40 - COMPLETANDO LA VENTANA
  4. 41 - Un poquito de actividad
  5. 42 - Y para terminar...
  6. 43 - Finale con tutto
  7. 44 - UN PARÉNTESIS DE ENTRADA/SALIDA
  8. 45 - Primera Lectura
  9. 46 - Capturando excepciones
  10. 47 - Los applets y los archivos
  11. 48 - Nuestro modesto "Editor"
  12. 49 - VOLVIENDO AL AWT
  13. 50 - Menú a la Java
  14. 51 - Dialogos
  15. 52 - DIBUJAVA
  16. 53 - Canvas en acción
  17. 54 - El applet-container
  18. 55 - Nuestro Canvas a medida
  19. 56 - DIBUJAVA II
  20. 57 - Vectores en acción
  21. 58 - Flicker molesto!
  22. 59 - Anímate!
  23. 60 - JAVA EN HEBRAS
  24. 61 - Los pasos basicos
  25. 62 - Reunión de amigos
  26. 63 - Creando Threads
  27. 64 - Y los applets...?
  28. 65 - LA LIEBRE Y LA TORTUGA (Y EL GUEPARDO)
  29. 66 - Sincronicemos los relojes
  30. 67 - Mas sincronización
  31. 68 - MULTIMEDIA!
  32. 69 - Parametrizando un applet
  33. 70 - PASEANDO POR LA RED
  34. 71 - Los Sockets
  35. 72 - Un servidor atento
  36. 73 - El cliente satisfecho
Autor y licencia de 'Java partiendo de Cero - Nuestro Canvas a medida'
Jorge Bourdette Extraído de: http://www.publispain.com/supertutoriales Copyright
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Wikis relacionados con 'Java partiendo de Cero - Nuestro Canvas a medida'

Amplio tutorial de Java para empezar a trabajar y ampliar conocimientos de este lenguaje.
En este artículo se explica una sencilla manera para poder escuchar música en formato mp3... Más »
En el mundo de los Incas, Mayas y Aztecas, el tiempo no es concebido proceder... Más »
Un repaso a los componentes gráficos, aquellos en los que nos tenemos que encargar de... Más »
Partiendo del cine mudo como documento histórico y subrayando el valor artístico de la música... Más »
¿Estás seguro de que deseas eliminar este capítulo?