1. Objetos Gráficos
2. Métodos para Dibujos
   - Líneas
   - Rectángulos
   - Círculos, Elipses
   - Funciones Gráficas
   - Fractales
   - Líneas Flotantes
3. Métodos para Imágenes
4. Doble Buffering de Gráficos
   - Contextos Gráficos
   - Creación de Contextos Gráficos
   - Utilización de Contextos Gráficos
5. Nuevas Clases para Dibujo
6. La Clase MediaTracker
   - Manejo de Imágenes para Animación
   - Creación de un Objeto MediaTracker
   - Ejemplo de Animación
7. Sonido en Java
   - Reproducción de Sonido
   - Reproducción Repetitiva
8. Entrada por Ratón

### Objetos Gráficos

En páginas anteriores ya se ha mostrado cómo escribir applets, cómo lanzarlos y los fundamentos básicos de la presentación de información sobre ellos. Ahora, pues, querremos hacer cosas más interesantes que mostrar texto; ya que cualquier página HTML puede mostrar texto. Para ello, Java proporciona la clase Graphics, que permite mostrar texto a través del método drawString(), pero también tiene muchos otros métodos de dibujo. Para cualquier programador, es esencial el entendimiento de la clase Graphics, antes de adentrarse en el dibujo de cualquier cosa en Java. Esta clase proporciona el entorno de trabajo para cualquier operación gráfica que se realice dentro del AWT. Juega dos importantes papeles: por un lado, es el contexto gráfico, es decir, contiene la información que va a afectar a todas las operaciones gráficas, incluyendo los colores de fondo y texto, la fuente de caracteres, la localización y dimensiones del rectángulo en que se va a pintar, e incluso dispone de información sobre el eventual destino de las operaciones gráficas (pantalla o imagen). Por otro lado, la clase Graphics proporciona métodos que permiten el dibujo de primitivas, figuras y la manipulación de fonts de caracteres y colores. También hay clases para la manipulación de imágenes, doble-buffering, etc.

Para poder pintar, un programa necesita un contexto gráfico válido, representado por una instancia de la clase Graphics. Pero, como esta clase es abstracta, no se puede instanciar directamente; así que debemos crear un componente y pasarlo al programa como un argumento a los métodos paint() o update().

Los dos métodos anteriores, paint() y update(), junto con el método repaint() son los que están involucrados en la presentación de gráficos en pantalla. El AWT, para reducir el tiempo que necesitan estos métodos para realizar el repintado en pantalla de gráficos, tiene dos axiomas:

- Primero, el AWT repinta solamente aquellos Componentes que necesitan ser repintados, bien porque estuviesen cubiertos por otra ventana o porque se pida su repintado directamente
- Segundo, si un Componente estaba tapado y se destapa, el AWT repinta solamente la porción del Componente que estaba oculta

En la ejecución del applet que aparece a continuación, EjemploGraf.java, podemos observar como se realiza este proceso. Ignorar la zona de texto de la parte superior del applet de momento, y centrar la mirada en la parte coloreada. Utilizando otra ventana, tapar y destapar parte de la zona que ocupa el applet. Se observará que solamente el trozo de applet que estaba cubierto es el que se repinta. Yendo un poco más allá, solamente aquellos componentes que estén ocultos y se vuelvan a ver serán los que se repinten, sin tener en cuenta su posición dentro de la jerarquía de componentes.

> Tu navegador no entiende la marca <APPLET>. La imagen siguiente es la reproducción de la apariencia del applet en pantalla:

La pantalla en Java se incrementa de izquierda a derecha y de arriba hacia abajo, tal como muestra la figura:

Los pixels de la pantalla son pues: `posición 0 + ancho de la pantalla - 1`.

En los textos, el punto de inserción se encuentra en la línea base de la primera letra.

### Métodos para Dibujos

Vamos a presentar métodos para dibujar varias figuras geométricas. Como estos métodos funcionan solamente cuando son invocados por una instancia válida de la clase Graphics, su ámbito de aplicación se restringe a los componentes que se utilicen en los métodos paint() y update(). Normalmente los métodos de dibujo de primitivas gráficas funcionan por pares: un método pinta la figura normal y el otro pinta la figura rellena.

    drawLine( x1,y1,x2,y2 )
    drawRect( x,y,ancho,alto )
    fillRect( x,y,ancho,alto )
    clearRect( x,y,ancho.alto )
    drawRoundRect( x,y,ancho,alto,anchoArco,altoArco )
    fillRoundRect( x,y,ancho,alto,anchoArco,altoArco )
    draw3DRect( x,y,ancho,alto,boolean elevado )
    fill3DRect( x,y,ancho,alto,boolean elevado )
    drawOval( x,y,ancho,alto )
    fillOval( x,y,ancho,alto )
    drawArc( x,y,ancho,alto,anguloInicio,anguloArco )
    fillArc( x,y,ancho,alto,anguloInicio,anguloArco )
    drawPolygon( int[] puntosX,int[] puntosY[],numPuntos )
    fillPolygon( int[] puntosX,int[] puntosY[],numPuntos )
    drawString( string s,x,y )
    drawChars( char data[],offset,longitud,x,y )
    drawBytes( byte data[],offset,longitud,x,y )
    copyArea( xSrc,ySrc,ancho,alto,xDest,yDest )

|  | ##### [Anterior] [Indice] [Siguiente]