Differenze tra le versioni di "Ruotare una immagine sul proprio asse centrale"

Da Gambas-it.org - Wikipedia.
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 .