Ottenere l'effetto della gomma per cancellare in una DrawingArea
Vai alla navigazione
Vai alla ricerca
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 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()
Dim i As Integer
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 = 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