## Dibujar Imágenes

Aquí tienes un ejemplo de código que muestra una image a su tamaño normal en la esquina superior izquierda del área del Componente (0,0):

    g.drawImage(image, 0, 0, this);

Aquí tienes un ejemplo de código que muestra una imagen escalada para tener 300 pixels de ancho y 62 de alto, empezando en las coordenadas (90,0):

    g.drawImage(myImage, 90, 0, 300, 62, this);

Abajo tienes un applet que muestra una imagen dos veces, utilizando los dos ejemplos de código anteriores. Aquí tienes el código completo del programa.

La clase Graphics declara los siguientes métodos drawImage(). Todos devuelven un valor boolenao, aunque ese valor casi nunca se utiliza. El valor de retorno es true si la imagen se ha cargado completamente, y por lo tanto se ha dibujado completamente; de otra forma, es false.

- public abstract boolean drawImage(Image img, int x, int y, ImageObserver observer)
- public abstract boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)
- public abstract boolean drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer)
- public abstract boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer)

Los métodos drawImage() tienen los siguientes argumentos:

Image img
  La imagen a dibujar.
int x, int y
  Las coordenadas de la esquina superior izquierda de la imagen.
int width, int height
  Al anchura y altura (en pixels) de la imagen.
Color bgcolor
  El cólor de fondo de la imagen. Esto puede ser útil si la imagen contiene pixels transparentes y sabe que la imagen se va a mostrar sobre un fondo sólido del color indicado.
ImageObserver observer
  Un objeto que implementa el interface ImageObserver. Esto registra el objeto como el observador de la imagen para que sea notificado siempre que esté disponible nueva información sobre la imagen. La mayoría de los componentes pueden especificar simplemente this.

La razón por la que this funciona como el observador de la imagen es que la clase Component implementa el interface ImageObsever. Esta implementación llama al método repaint() cuando se han cargado los datos de la imagen, que normalmente es lo que se quiere que suceda.

Los métodos drawImage() vuelven después de mostrar los datos de la imagen que ha sido cargada. Si quieres asegurarte de que drawImage() sólo dibuja imágenes completas, debes seguir la carga de la imagen. Puedes ver la página anterior para información sobre el seguimiento de la carga de una imagen.

Ozito