Disegnare in una DrawingArea due immagini sovrapposte anche consentendo il cambio di opacità di quella disegnata sopra: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| Riga 4: | Riga 4: | ||
Mostriamo un semplice esempio pratico, nel quale il livello di opacità dell'immagine sovrastante potrà essere cambiato mediante la rotazione della rotellina del mouse. | Mostriamo un semplice esempio pratico, nel quale il livello di opacità dell'immagine sovrastante potrà essere cambiato mediante la rotazione della rotellina del mouse. | ||
Private DrawingArea1 As DrawingArea | |||
Private im1 As Image | Private im1 As Image | ||
Private im2 As Image | Private im2 As Image | ||
| Riga 10: | Riga 11: | ||
Public Sub Form_Open() | Public Sub Form_Open() | ||
Me.Arrangement = Arrange.Fill | |||
With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1" | |||
.X = 0 | |||
.Y = 0 | |||
End With | |||
<FONT Color=gray>' ''Usa questa volta la Classe "Image in modo "Statico" per caricare le due immagini da sovrapporre nella "DrawingArea":''</font> | <FONT Color=gray>' ''Usa questa volta la Classe "Image in modo "Statico" per caricare le due immagini da sovrapporre nella "DrawingArea":''</font> | ||
im1 = Image.Load("<FONT Color=gray>''/percorso/della/prima/immagine''</font>") | im1 = Image.Load("<FONT Color=gray>''/percorso/della/prima/immagine''</font>") | ||
| Riga 22: | Riga 30: | ||
<FONT Color=gray>' ''Disegna entrambe le immagini su un'unica "DrawingArea":''</font> | <FONT Color=gray>' ''Disegna entrambe le immagini su un'unica "DrawingArea":''</font> | ||
With Paint | With Paint | ||
<FONT Color= | <FONT Color=red>.DrawImage</font>(im1, 100, 100, im1.W, im1.H, 1.00) | ||
<FONT Color=gray>' ''Passa una variabile per modificare il livello di opacità dell'immagine "im2" sovrapposta a quella "im1":''</font> | <FONT Color=gray>' ''Passa una variabile per modificare il livello di opacità dell'immagine "im2" sovrapposta a quella "im1":''</font> | ||
<FONT Color= | <FONT Color=red>.DrawImage</font>(im2, 100, 100, im2.W, im2.H, <FONT Color=red>'''f'''</font>) | ||
.End | .End | ||
End With | End With | ||
Versione delle 11:44, 23 nov 2024
Per disegnare in una DrawingArea due o più immagini, che restino eventualmente gestibili in modo distinto anche successivamente, si usa il Metodo ".DrawImage( )" della Classe "Paint" per ciascuna immagine.
Inoltre, avendo due immagini disegnate l'una sovrapposta all'altra, se si intende anche cambiare il livello di opacità dell'immagine che sta sopra, in modo che si intraveda l'immagine sottostante, bisognerà modificare l'apposito sesto parametro formale del predetto Metodo.
Mostriamo un semplice esempio pratico, nel quale il livello di opacità dell'immagine sovrastante potrà essere cambiato mediante la rotazione della rotellina del mouse.
Private DrawingArea1 As DrawingArea
Private im1 As Image
Private im2 As Image
Private f As Float
Public Sub Form_Open()
Me.Arrangement = Arrange.Fill
With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"
.X = 0
.Y = 0
End With
' Usa questa volta la Classe "Image in modo "Statico" per caricare le due immagini da sovrapporre nella "DrawingArea":
im1 = Image.Load("/percorso/della/prima/immagine")
im2 = Image.Load("/percorso/della/seconda/immagine")
End
Public Sub DrawingArea1_Draw()
' Disegna entrambe le immagini su un'unica "DrawingArea":
With Paint
.DrawImage(im1, 100, 100, im1.W, im1.H, 1.00)
' Passa una variabile per modificare il livello di opacità dell'immagine "im2" sovrapposta a quella "im1":
.DrawImage(im2, 100, 100, im2.W, im2.H, f)
.End
End With
End
' Modifica il livello di opacità della seconda immagine mediante la rotazione della rotellina del mouse:
Public Sub DrawingArea1_MouseWheel()
Select Case Mouse.Delta
Case 1
f += 0.025
If f > 1.0 Then f = 1.00
Case -1
f -= 0.025
If f < 0.0 Then f = 0.0
End Select
' Consente alla "DrawingArea" di ridisegnare le due immagini con il nuovo livello di opacità dell'immagine sovrapposta:
DrawingArea1.Refresh
End