Differenze tra le versioni di "Ruotare una immagine sul proprio asse centrale"
Riga 2: | Riga 2: | ||
La rotazione dell'immagine viene esercitata dal metodo | La rotazione dell'immagine viene esercitata dal metodo | ||
− | ''Paint.Rotate(Rad(valore_in_gradi)'' | + | ''Paint.Rotate(Rad(valore_in_gradi))'' |
Se si intende ruotare l'immagine in senso orario, bisognerà porre valori ''negativi'' dei gradi: ''Paint.Rotate(Rad(-valore_in_gradi)''. | Se si intende ruotare l'immagine in senso orario, bisognerà porre valori ''negativi'' dei gradi: ''Paint.Rotate(Rad(-valore_in_gradi)''. | ||
Riga 26: | Riga 26: | ||
<FONT color=gray>' ''Ruotiamo l'immagine di 45° in senso antiorario:''</font> | <FONT color=gray>' ''Ruotiamo l'immagine di 45° in senso antiorario:''</font> | ||
− | .Rotate(Rad(45) | + | .Rotate(Rad(45)) |
.Translate(- immago.W \ 2, - immago.H \ 2) | .Translate(- immago.W \ 2, - immago.H \ 2) |
Versione delle 09:40, 20 nov 2014
Per ruotare un'immagine rigorosamente intorno al proprio asse centrale, mantenendo in modo costante e coerente la sua distanza dal Controllo che contiene l'oggetto "Immagine", possiamo utilizzare le risorse delle Classi Paint e PaintBrush. |1|
La rotazione dell'immagine viene esercitata dal metodo
Paint.Rotate(Rad(valore_in_gradi))
Se si intende ruotare l'immagine in senso orario, bisognerà porre valori negativi dei gradi: Paint.Rotate(Rad(-valore_in_gradi).
Nel seguente esempio pratico, una immagine sarà ruotata di 45° in senso antiorario:
Public Sub Buton1_Click() Dim pb As PaintBrush Dim immago As Image immago = Image.Load("/percorso/dell'immagine") With Paint .Begin(immago) ' Creiamo un oggetto "PaintBrush" mediante l'immagine caricata: pb = .Image(immago) ' I valori associati ai parametri di questo metodo devono ' essere sempre pari alla metà della dimensione dell'immagine caricata: .Translate(immago.W \ 2, immago.H \ 2) ' Ruotiamo l'immagine di 45° in senso antiorario: .Rotate(Rad(45)) .Translate(- immago.W \ 2, - immago.H \ 2) .Brush = pb .Rectangle(0, 0, immago.W, immago.H) .Fill .End End With ' Mostriamo l'immagine, come ruotata, nella "PictureBox": PictureBox1.Picture = immago.Picture ' Salviamo la nuova immagine, come ruotata, nell'HD: immago.Save("/tmp/nuova_immagine.png", 100) End
Note
[1] L'uso combinato delle Classi Paint e PaintBrush, come nell'esempio, evita che l'oggetto Image si sposti in senso verticale e/o orizzontale durante la sua rotazione, come avviene se si utilizza semplicemente il metodo .Rotate() della Classe Image .