FillColorZone




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:











( fillcolorzone.html )- by Paolo Puglisi - Modifica del 17/12/2023