reading parametros new handling example create java drawimage

new - parametros drawimage java



¿Cómo funciona Java Graphics.drawImage() y cuál es la función de ImageObserver? (4)

¿Cómo se debe utilizar el drawImage () de Java? No encuentro la documentación de JDK muy próxima. Por ejemplo, todas las firmas de drawImage requieren un ImageObserver pero la documentación para esto no es muy útil para los nuevos usuarios.


Como han dicho otros, esta API se concibió cuando se asumió que las imágenes que se renderizarían se cargarían a través de la red. Cuando le pide al kit de herramientas que cargue una imagen, se supone que es solo un shell y que los bytes requeridos para saber su tamaño y píxeles aún se arrastran por el cable.

En este caso, drawImage no puede mostrar nada cuando se llama por primera vez. A medida que el tamaño y los píxeles están disponibles, se notifica a ImageObserver. En el caso de Component implements ImageObserver , su comportamiento es repintar cuando los datos están disponibles.


En realidad usé drawImage() muchas veces siempre con el parámetro ImageObserver establecido en null . Ok, eso no significa que sea inútil, pero hice todo lo que necesitaba sin saber su uso ...


Image objetos de Image no están necesariamente completamente cargados. Si se invoca Graphics.drawImage en una imagen incompleta, dibujará la mayor cantidad posible de la imagen y luego alertará a ImageObserver (llamando a imageUpdate ) cuando se cargue más imagen.

El ImageObserver puede ser nulo, en cuyo caso no recibirá ninguna notificación. Esto es común si se sabe que las imágenes están cargadas, o si ya hay otro mecanismo que repinta.

Tenga en cuenta que Component implementa ImageObserver , y su método imageUpdate causará un repaint en el área afectada.


Puedes salirte con Graphics.drawImage(img, x, y, null) [o similar]. El parámetro ImageObserver es una devolución de llamada para informarle del progreso de la operación de sorteo; y realmente solo es útil si está obteniendo el parámetro Imagen de forma asíncrona.

Para ser más claro, si llama a drawImage con una imagen cargada de forma incompleta, esto:

  1. devuelve falso (inmediatamente)
  2. dibuja la mayor cantidad posible de la Image (todo lo que está cargado)
  3. y, en algún momento futuro, llame a ImageObserver cuando haya más imagen disponible.

Básicamente, si está trabajando con Image memoria (ya sea cargadas desde el sistema de archivos o ImageObserver por su programa) no se preocupe por el parámetro ImageObserver . Si está cargando Image a través de la red y no está esperando explícitamente que se carguen, deberá emplear un ImageObserver para asegurarse de que "completamente" dibuje una Image .