Ottenere l'effetto della gomma per cancellare in una DrawingArea

Da Gambas-it.org - Wikipedia.
Versione del 17 lug 2024 alle 17:50 di Vuott (Discussione | contributi) (Creata pagina con "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, l...")

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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 punti As New Short[] 
Private im1 As New Image
Private im2 As New Image


Public Sub Form_Open()

 DrawingArea1.Cursor = New Cursor(Picture["icon:/16/pen"], 2, 13)

 im1 = im1.Load("/percorso/del/primo/file/immagine")    ' l'immagine di fondo
 im2 = im2.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