venerdì 29 aprile 2016

Interazione con utente

L'interazione è quella caratteristica dei moderni programmi che consente un dialogo tra l'applicazione e l'utente durante l'esecuzione di un programma. Lo sviluppo di programmi interattivi è stato ovviamente favorito dall'introduzione delle interfacce grafiche.

Il dialogo tra utente e programma avviene principalmente attraverso il manifestarsi di una serie di eventi asincroni rispetto all'esecuzione del programma che deve pertanto essere in grado di reagire a tali eventi eseguendo opportune azioni.

Il modello del dialogo utente-programma è pertanto descritto dalla seguente figura:





Un evento è generato da una componente di un'interfaccia grafica, detta anche la sorgente dell'evento.

Il manifestarsi dell'evento è riconosciuto da un modulo del programma, detto ascoltatore, che attiva un'apposita procedura di risposta dell’applicazione.

Facendo riferimento al codice del post precedente (qui), vediamo le interazioni attraverso gli eventi del mouse che sono state introdotte nel programma, affinché l'utente sia in grado di spostare i rettangoli all'interno del bitmap.

  • MouseDown: permette, una volta premuto il tasto sinistro del mouse, di  trascinare in basso il                          rettangolo

  • MouseUppermette, una volta premuto il tasto sinistro del mouse, di trascinare in alto il                               rettangolo

  • MouseButtons.Leftpermette, una volta premuto il tasto sinistro del mouse, di trascinare il                                         rettangolo a sinistra

  • MouseButtons.Right: permette, una volta premuto il tasto sinistro del mouse, di trascinare il                                         rettangolo a destra



  • MouseWheel: permette di ingrandire o rimpicciolire il rettangolo  attraverso lo scroll del                                   mouse(scroll in alto ingrandisce,  scroll in basso rimpicciolisce)

Di seguito, un esempio:







Fonte:

http://www.webalice.it/mazzantis95/FI_Interazione.html

Programmazione e animazione orientata agli oggetti nella PictureBox

La programmazione orientata agli oggetti (OOP, Object Oriented Programming) è un paradigma di programmazione che permette di definire oggetti software in grado di interagire gli uni con gli altri attraverso lo scambio di messaggi ma mantenendo ognuno il proprio stato e i propri dati. Un ambito che più di altri riesce a sfruttare i vantaggi della programmazione ad oggetti è quello delle interfacce grafiche.



Tra gli oggetti grafici più utilizzati abbiamo il Bitmap, la PictureBox e il Graphics.



Un Bitmap è un tipo di organizzazione della memoria o un formato di file immagine utilizzato per memorizzare immagini digitali. Il termine bitmap deriva dal linguaggio di programmazione e significa “mappa di bit”. Le immagini bmp sono composte di singoli punti denominati pixel; la trama dei pixel (talmente fitta da non poter essere distinta ad occhio nudo se non ingrandendo notevolmente l’immagine) da origine alle immagini. Un pixel è dotato di soli due attributi: posizione e colore

.
L’oggetto grafico PictureBox, è in realtà molto simile ad una finestra vuota, su cui è possibile definire un’immagine. Date le sue caratteristiche è possibile gestire e manipolare la PictureBox proprio come una finestra (movimento, interazione con il mouse e la tastiera), con l’unica differenza che questo tipo di oggetto necessita di un oggetto che funge da contenitore, come ad esempio una Form.


La classe Graphics contiene i metodi per disegnare testo, immagini, linee, rettangoli e altre forme su un controllo; richiede l’utilizzo di una penna (Pen) per disegnare un contorno, o un pennello (Brush) per rappresentare una superficie piena.
Bisogna pensare all'oggetto Graphics come al foglio sul quale disegnare, scrivere, colorare e riprodurre immagini. Senza tale oggetto non è possibile eseguire alcuna azione di tipo grafico, pertanto è fondamentale disporre di un’istanza di questa classe.


Esempio

Vediamo l’utilizzo delle classi con un esempio pratico implementando un codice in VB.NET.

Ciò che si vuole generare è una serie di palline che si muovono liberamente nella nostra PictureBox.
Per prima cosa, creiamo la classe “pallina” dove verranno definiti proprietà e metodi della classe e il costruttore:
Tornando al form, per prima cosa inizializziamo tre Timer, indispensabili per il refresh dell'orologio, della cornice e delle palline.

 Attraverso la funzione Random() generiamo casualmente delle palline...

...e sempre casualmente, assegniamo ad ognuna di queste un colore.

L'output del programma è: