Ottenere l'effetto della gomma per cancellare in una DrawingArea
Da Gambas-it.org - Wikipedia.
Versione del 23 nov 2024 alle 10:03 di Vuott (Discussione | contributi)
Poste due immagini, anche di diversa dimensione, l'una sull'altra, l'effetto, che si vuol ottenere, è quello di far apparire lungo la parte, percorsa dal cursore del mouse, la porzione dell'immagine sottostante.
Mostriamo un possibile codice pratico:
Private im1 As Image Private im2 As Image Private punti As New Short[] Public Sub Form_Open() DrawingArea1.Cursor = New Cursor(Picture["icon:/16/pen"], 2, 13) im1 = Image.Load("/percorso/del/primo/file/immagine") ' L'immagine di fondo im2 = Image.Load("/percorso/del/secondo/file/immagine") ' L'immagine principale, da cancellare, che copre quella di fondo Me.Resize(Max(im1.W, im2.W), Max(im1.H, im2.H)) DrawingArea1.Resize(Max(im1.W, im2.W), Max(im1.H, im2.H)) End Public Sub DrawingArea1_Draw() With Paint .DrawImage(im1, 0, 0, im1.W, im1.H, 1.0, Null) .DrawImage(im2, 0, 0, im2.W, im2.H, 0.9, Null) For i As Integer = 0 To punti.Max Step 2 .Brush = .Image(im1) .Arc(punti[i], punti[i + 1], 16, Rad(0), Rad(360), False) .Fill Next .End End With End Public Sub DrawingArea1_MouseMove() With punti .Push(Mouse.X) .Push(Mouse.Y) End With DrawingArea1.Refresh() End Public Sub DrawingArea1_MouseUp() With punti .Push(Mouse.StartX) .Push(Mouse.StartY) End With DrawingArea1.Refresh() End
Ottenere con la cancellazione l'effetto di un unico colore
Se si vuole ottenere l'effetto di un unico colore durante la cancellazione dell'immagine principale, si potrà impostare - come immagine sottostante - un'immagine costituita da un unico colore.
Riprendendo il precedente esempio, sarà sufficiente impostare la seguente modifica, ad esempio per ottenere un effetto bianco con la cancellazione:
im2 = Image.Load("/percorso/del/file/immagine") ' L'immagine principale, da cancellare, che copre quella di fondo im1 = New Image(im2.W, im2.H, Color.White, Image.Standard) ' L'immagine di fondo che darà il colore unico come effetto "cancellazione"