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...")
 
 
(3 versioni intermedie di uno stesso utente non sono mostrate)
Riga 2: Riga 2:
  
 
Mostriamo un possibile codice pratico:
 
Mostriamo un possibile codice pratico:
  Private punti As New Short[]
+
  Private im1 As Image
  Private im1 As New Image
+
  Private im2 As Image
  Private im2 As New Image
+
  Private punti As New Short[]
 
   
 
   
 
   
 
   
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 = Image.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 = Image.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))
Riga 21: Riga 21:
 
   
 
   
 
  Public Sub DrawingArea1_Draw()   
 
  Public Sub DrawingArea1_Draw()   
+
    
   Dim i As Integer
 
 
 
   With Paint
 
   With Paint
 
     .DrawImage(im1, 0, 0, im1.W, im1.H, 1.0, Null)
 
     .DrawImage(im1, 0, 0, im1.W, im1.H, 1.0, Null)
 
     .DrawImage(im2, 0, 0, im2.W, im2.H, 0.9, Null)
 
     .DrawImage(im2, 0, 0, im2.W, im2.H, 0.9, Null)
     For i = 0 To punti.Max Step 2
+
     For i As Integer = 0 To punti.Max Step 2
 
       .Brush = .Image(im1)
 
       .Brush = .Image(im1)
 
       .Arc(punti[i], punti[i + 1], 16, Rad(0), Rad(360), False)
 
       .Arc(punti[i], punti[i + 1], 16, Rad(0), Rad(360), False)

Versione attuale delle 18:54, 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 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()   
 
 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