Differenze tra le versioni di "Ottenere l'effetto della gomma per cancellare in una DrawingArea"

Da Gambas-it.org - Wikipedia.
(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...")
 
Riga 11: Riga 11:
 
   DrawingArea1.Cursor = New Cursor(Picture["icon:/16/pen"], 2, 13)
 
   DrawingArea1.Cursor = New Cursor(Picture["icon:/16/pen"], 2, 13)
 
   
 
   
   im1 = im1.Load("<FONT Color=darkgreen>''/percorso/del/primo/file/immagine''</font>")    ' l'immagine di fondo
+
   im1 = im1.Load("<FONT Color=darkgreen>''/percorso/del/primo/file/immagine''</font>")    <FONT Color=gray>' ''L'immagine di fondo''</font>
   im2 = im2.Load("<FONT Color=darkgreen>''/percorso/del/secondo/file/immagine''</font>")  ' l'immagine che copre quella di fondo
+
   im2 = im2.Load("<FONT Color=darkgreen>''/percorso/del/secondo/file/immagine''</font>")  <FONT Color=gray>' ''L'immagine che copre quella di fondo''</font>
 
   
 
   
 
   Me.Resize(Max(im1.W, im2.W), Max(im1.H, im2.H))
 
   Me.Resize(Max(im1.W, im2.W), Max(im1.H, im2.H))

Versione delle 18:51, 17 lug 2024

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