Declare Function FloodFill Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Long
'poi nell'evento Load del form scrivere: Randomize Timer AutoRedraw = True DrawWidth = 1 ScaleMode = 3 FillStyle = 1 Circle (100, 100), 100, vbBlack Circle (150, 150), 100, vbBlack Circle (200, 200), 100, vbBlack FillStyle = 0 AutoRedraw = False 'sempre nel form all'evento MouseDown scrivere: If Button = vbLeftButton Then FillColor = QBColor(Int(Rnd * 15)) FloodFill hdc, X, Y, vbBlack End If 'provate ad eseguire l'applicazione cosi' scritta e guardate 'l'effetto che si avra' alla pressione del tasto sinistro del 'mouse su una zona all'interno o all'esterno dei tre cerchi 'disegnati. Quando si realizza una applicazione per manipolare delle immagini si ha la necessita' di dover colore una determinata zona alla pressione del tasto del mouse con un colore specifico. Normalmente il VB non permette questa operazione, che invece e' disponibile in altri linguaggi piu' avanzati. Per rimediare a questa piccola lacuna del VB si dovra' necessariamente utilizzare la funzione FloodFill delle API. Questa funzione ha bisogno di 4 parametri: il primo e' l'handle dell'oggetto (funzione oggetto.hdc del VB), le coordinate X e Y interne alla zona da colorare espresse in pixel e il colore di contorno. Il colore del riempimento della zona verra' selezionata dalla proprieta' FillColor dell'oggetto contenente l'immagine. Applicazione di esempio Per prima cosa creare un nuovo progetto tramite il menu File. Aggiungere al progetto un modulo standard tramite il menu Inserisci e scrivere la dichiarazione della funzione FloodFill nella sezione delle dichiarazioni generali: |