Ottenere l'effetto della gomma per cancellare in una DrawingArea
Da Gambas-it.org - Wikipedia.
Versione del 17 lug 2024 alle 17:53 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 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