Guide e Tutorials:indexed | |||||||||||||||||||
LA FUNZIONE EXTFLOODFILL (Tutorial completo) Attraverso l'API ExtFloodFill è possibile riempire un'area chiusa col colore prescelto. Per determinare l'area è necessario creare tale area. Questo può essere fatto ad esempio attraverso l'uso di una penna: utilizzare la ExtFloodFill su un controllo PictureBox vuoto può infatti portare al totale riempimento del controllo. Nel corso dell'articolo comunque vedremo quest'aspetto più nel dettaglio. Nel frattempo ecco di seguito la dichiarazione della funzione:
Come al solito la funzione ritorna il valore 0 in caso di fallimento ed un valore diverso dallo zero in caso di successo. I parametri della ExtFloodFill sono i seguenti:
Naturalmente, siccome crColor non si riferisce al colore col quale verrà riempita l'area, il problema viene risolto attraverso il metodo FillColor. FillColor indicherà dunque quale tonalità di colore utilizzare nell'operazione di riempimento dell'area. Facciamo un esempio. Vogliamo disegnare una linea alla pressione del tasto sinistro del mouse e poi riempire le aree chiuse così create attraverso la pressione del tasto destro del mouse. Apriamo un nuovo progetto EXE Standard nel quale trascineremo un controllo PictureBox. Andiamo innanzitutto a dichiarare le variabili che c'interessano e naturalmente la funzione ExtFloodFill:
Nell'evento Load di Form1 impostiamo le proprietà della PictureBox in modo da chiarirci sui parametri da immettere ogniqualvolta vogliamo disegnare su un controllo di questo tipo. Chiudiamo la sottoprocedura con End Sub:
Adesso nell'evento MouseDown di Picture1 inseriamo il codice che indica l'eventualità nella quale l'utente prema sul controllo Picture1 il tasto sinistro del mouse. Verranno in questo caso memorizzate le coordinate del punto di Picture1 sul quale si è cliccato, coordinate di partenza per andare a disegnare la linea nell'evento MouseMove di Picture1. Indichiamo infine che in quest'eventualità la variabile Booleana 'Disegna' prende il valore True e quindi che si può cominciare a disegnare la linea:
Sempre all'interno dello stesso evento vediamo il codice nel caso in cui il tasto premuto sia quello destro, per cui si attiva il riempimento dell'area. Iniziamo col calcolare un codice di colore RGB casuale da applicare all'area da riempire. In secondo luogo richiamiamo la funzione ExtFloodFill. Chiudiamo infine la sottoprocedura con End Sub:
Impostando in questo modo la ExtFloodFill abbiamo indicato che l'oggetto sul quale disegnare è Picture1, che il punto di partenza è il punto (di coordinate X ed Y) sul quale si è cliccato col tasto destro del mouse e soprattutto che l'operazione di riempimento deve proseguire finchè non viene incontrato un bordo nero (rappresentato dalla linea che andiamo a tracciare che è di colore nero, e che rappresenta appunto il bordo dell'area). Sviluppiamo ora il codice per l'evento MouseMove: partendo proprio dal punto nel quale si era cliccato col tasto sinistro del mouse, per ogni punto sul quale si posiziona il puntatore, verrà disegnato un punto (o meglio una linea):
Arriviamo così al termine dell'applicazione: quando uno dei due tasti del mouse (a noi a dire il vero interessa in questo caso solamente il sinistro) viene rilasciato, si interrompe l'operazione di disegno della linea:
L'esempio è terminato. Se adesso si traccia una linea chiusa sul controllo PictureBox tenendo premuto il tasto sinistro del mouse e successivamente si clicca col tasto destro su un punto interno all'area così determinata, si potrà apprezzare l'operazione di riempimento tramite un colore determinato in maniera casuale dell'area in questione, proprio come nella figura sottostante: ![]() Presemtiamo infine qui di seguito il codice completo dell'esempio:
|
Archivio:ndexed | ||||
Lezioni | Commenta questa lezione | Invia la tua guida | Avviso per le nuove lezioni | Proponi un argomento |
Visual Basic Italia© copyright 2000 - tutti i diritti riservati |