Differenze tra le versioni di "Ottenere l'effetto della gomma per cancellare in una DrawingArea"
Da Gambas-it.org - Wikipedia.
(2 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 2: | Riga 2: | ||
Mostriamo un possibile codice pratico: | Mostriamo un possibile codice pratico: | ||
− | Private | + | Private im1 As Image |
− | Private | + | Private im2 As Image |
− | Private | + | 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 = Image.Load("<FONT Color=darkgreen>''/percorso/del/primo/file/immagine''</font>") <FONT Color=gray>' ''L'immagine di fondo''</font> |
− | im2 = | + | 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() | ||
− | + | ||
− | |||
− | |||
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