Differenze tra le versioni di "Ridurre le dimensioni di una immagine con il Metodo ".Scale()" del Componente gb.cairo"
(2 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
Per modificare le dimensioni di una immagine caricata e gestita mediante il Componente gb.cairo, bisognerà utilizzare il Metodo "''.Scale( )''" della Classe statica "''Cairo''". | Per modificare le dimensioni di una immagine caricata e gestita mediante il Componente gb.cairo, bisognerà utilizzare il Metodo "''.Scale( )''" della Classe statica "''Cairo''". | ||
− | |||
Nell'esempio che segue si utilizzeranno due immagini, una delle quali potrà essere ridimensionata rispetto all'altra ruotando in avanti o indietro la rotellina del mouse. | Nell'esempio che segue si utilizzeranno due immagini, una delle quali potrà essere ridimensionata rispetto all'altra ruotando in avanti o indietro la rotellina del mouse. | ||
+ | <BR>In particolare ruotando anche semplicemente avanti la rotellina del mouse, si attiverà un processo di ingrandimento continuo dell'immagine. Se si ruoterà indietro la rotellina, tale processo di ingrandimento si arresterà. Analogo comportamento si avrà ruotando indietro la rotellina: si avvierà un processo di rimpicciolimento dell'immagine; ma se si ruoterà poi in avanti la rotellina, quel processo si arresterà; e così via. | ||
<BR>L'immagine risultante delle due caricate sarà visualizzata da un Oggetto "''ImageView''". <SUP>[[[#Note|nota 1]]]</sup> | <BR>L'immagine risultante delle due caricate sarà visualizzata da un Oggetto "''ImageView''". <SUP>[[[#Note|nota 1]]]</sup> | ||
Private iv As ImageView | Private iv As ImageView | ||
+ | Private md As Short | ||
Private sc As Float = 1.0 | Private sc As Float = 1.0 | ||
Riga 23: | Riga 24: | ||
'''Public''' Sub ImV_MouseWheel() | '''Public''' Sub ImV_MouseWheel() | ||
+ | |||
+ | md += Mouse.Delta | ||
If Mouse.Delta == 1 Then | If Mouse.Delta == 1 Then | ||
− | Immagine(0. | + | Repeat |
+ | If md > 1 Then md = 1 | ||
+ | Immagine(0.001) | ||
+ | Wait 0.03 | ||
+ | Until md < 1 | ||
Else | Else | ||
− | Immagine(-0. | + | Repeat |
+ | If md < -1 Then md = -1 | ||
+ | Immagine(-0.001) | ||
+ | Wait 0.03 | ||
+ | Until md > -1 | ||
Endif | Endif | ||
Riga 37: | Riga 48: | ||
Dim im1, im2 As Image | Dim im1, im2 As Image | ||
− | im1 = Image.Load("<FONT Color=gray>''/percorso/della/prima/immagine''</font>") | + | <FONT Color=gray>' ''Carica la prima immagine (quella che sarà ridimensionata) avente, ad esempio, sfondo bianco che viene reso trasparente:''</font> |
+ | im1 = Image.Load("<FONT Color=gray>''/percorso/della/prima/immagine''</font>").Erase(Color.White) | ||
− | + | <FONT Color=gray>' ''Carica la seconda immagine, le cui dimensioni resteranno invariate:''</font> | |
− | im2 = Image.Load("<FONT Color=gray>''/percorso/della/seconda/immagine''</font>" | + | im2 = Image.Load("<FONT Color=gray>''/percorso/della/seconda/immagine''</font>") |
sc += vf | sc += vf | ||
Riga 53: | Riga 65: | ||
End With | End With | ||
− | Me.Caption = | + | Me.Caption = Format(sc, "0.000") |
'''End''' | '''End''' |
Versione attuale delle 18:29, 6 giu 2020
Per modificare le dimensioni di una immagine caricata e gestita mediante il Componente gb.cairo, bisognerà utilizzare il Metodo ".Scale( )" della Classe statica "Cairo".
Nell'esempio che segue si utilizzeranno due immagini, una delle quali potrà essere ridimensionata rispetto all'altra ruotando in avanti o indietro la rotellina del mouse.
In particolare ruotando anche semplicemente avanti la rotellina del mouse, si attiverà un processo di ingrandimento continuo dell'immagine. Se si ruoterà indietro la rotellina, tale processo di ingrandimento si arresterà. Analogo comportamento si avrà ruotando indietro la rotellina: si avvierà un processo di rimpicciolimento dell'immagine; ma se si ruoterà poi in avanti la rotellina, quel processo si arresterà; e così via.
L'immagine risultante delle due caricate sarà visualizzata da un Oggetto "ImageView". [nota 1]
Private iv As ImageView Private md As Short Private sc As Float = 1.0 Public Sub Form_Open() With iv = New ImageView(Me) As "ImV" .X = 0 .Y = 0 .W = Me.W .H = Me.H End With Immagine(0.0) End Public Sub ImV_MouseWheel() md += Mouse.Delta If Mouse.Delta == 1 Then Repeat If md > 1 Then md = 1 Immagine(0.001) Wait 0.03 Until md < 1 Else Repeat If md < -1 Then md = -1 Immagine(-0.001) Wait 0.03 Until md > -1 Endif End Private Procedure Immagine(vf As Float) Dim im1, im2 As Image ' Carica la prima immagine (quella che sarà ridimensionata) avente, ad esempio, sfondo bianco che viene reso trasparente: im1 = Image.Load("/percorso/della/prima/immagine").Erase(Color.White) ' Carica la seconda immagine, le cui dimensioni resteranno invariate: im2 = Image.Load("/percorso/della/seconda/immagine") sc += vf With Cairo .Begin(im2) .Scale(sc, sc) .Source = .ImagePattern(im1, 0, 0) .Paint iv.Image = .Device .End End With Me.Caption = Format(sc, "0.000") End
Note
[1] Vedere anche: Caricare un Oggetto Image direttamente in una ImageView con gb.cairo