Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Disegnare il Canvas

Implementazione della classe che effettuerà le operazioni di disegno
Implementazione della classe che effettuerà le operazioni di disegno
Link copiato negli appunti

Implementiamo la classe MyCanvas che estende l'oggetto J2ME Canvas e che effettuerà le operazioni di disegno:

Listato 7. Implementazione classe MyCanvas (Vedi codice completo)

..//
            image = Image.createImage("/tramonto.png");
            setFullScreenMode(true);
            width = getWidth();
            height = getHeight();
..//
        g.setColor(0, 0, 255);
        g.fillRect(0, 0, width, height);
        if (image != null)
        {
            g.drawImage(image, width/2, height/2, Graphics.VCENTER | Graphics.HCENTER);
        }
        g.setColor(255,255,255);
        g.drawString(lastKeyPressed, width/2, height - 10, Graphics.BASELINE | Graphics.HCENTER);
..//
        switch (arg0)
        {
          case KEY_NUM0:
              lastKeyPressed = "0";
          break;
          
          case KEY_NUM1:
              lastKeyPressed = "1";
          break;
          
          case KEY_NUM2:
..//
        }
        repaint();
    }
}

La prima operazione che effettuiamo nel costruttore è quella del caricamento dell'immagine: per effettuarla sfruttiamo il metodo statico offerto dalla classe Image che permette di specificare, come parametro, il percorso del file png da leggere.

Eseguiamo poi l'istruzione setFullScreenMode, introdotta dal profilo MIDP 2.0, che ci permette di disegnare occupando tutto il display del terminale: questa operazione non era possibile in MIDP 1.0 a meno di eventuali API opzionali come nel caso delle Nokia UI.

Memorizziamo infine due parametri, width ed height, che utilizzeremo per piazzare sullo schermo i componenti che disegneremo.

Il metodo paint()

Nel metodo paint() si trovano le istruzioni di disegno che possono essere pilotate tramite l'oggetto Graphics.

Il metodo setColor permette, tramite i tre parametri int, di definire i livelli di colore rosso, verde e blu con i quali verranno effettuati i successivi tracciamenti: scegliamo blu, come colore per il nostro sfondo, che viene disegnato con l'istruzione fillRect la quale traccia un rettangolo, partendo dal punto di coordinate (0,0), di larghezza width e altezza height.

Disegnamo sullo sfondo l'immagine piazzandola tramite i parametri di chamata di drawImage:

  • il primo parametro è l'oggetto Image;
  • il secondo e terzo parametro (width/2, height/2) definiscono il punto di ancoraggio dell'immagine che sarà al centro del canvas;
  • il quarto parametro specifica che l'immagine sarà baricentrica rispetto al punto di ancoraggio.

Scriviamo poi la stringa che ci indica quale è l'ultimo tasto che abbiamo premuto sulla tastiera del terminale: scegliamo bianco come colore e poi utilizziamo il metodo drawString in maniera analoga a drawImage.

Questa volta, il punto di ancoraggio, è posto centralmente in orizzontale e a 10 pixel dalla fine del canvas in verticale. La stringa è posta, con la linea di base, sul punto di ancoraggio e ancora una volta, centrata orizzontalmente rispetto allo stesso.

Figura 6. Punto di ancoraggio
punto di ancoraggio

Implementando il metodo keyPressed intercettiamo gli eventi di pressione dei tasti, decodifichiamo quale tasto è stato premuto (all'interno del costrutto switch/case) e ridisegnamo il canvas con il metodo repaint() che ci mostrerà quale tasto ho premuto.

Figura 7. Canvas disegnato
canvas disegnato

Conclusioni

In questa sezione abbiamo visto una piccola parte delle funzionalità grafiche di basso livello fornite dalle librerie J2ME.

Facendo riferimento alla documentazione delle API, in particolar modo all'oggetto Graphics, si può notare la varietà di metodi a disposizione per disegnare figure e immagini che personalizzeranno le nostre midlet.

Ti consigliamo anche