Ruotare una immagine sul proprio asse centrale: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 7: Riga 7:


Nel seguente esempio pratico, una immagine sarà ruotata di 45° in senso antiorario:
Nel seguente esempio pratico, una immagine sarà ruotata di 45° in senso antiorario:
Private im As Image
'''Public''' Sub  Form_Open()
  im = Image.Load("''/percorso/dell'immagine''")
<FONT color=gray>' ''Rendiamo la "DrawingArea" delle medesime dimensioni dell'immagine caricata:''</font>
  With DrawingArea1
    .W = im.W
    .h = im.H
  End With
'''End'''
  '''Public''' Sub DrawingArea1_Draw()
  '''Public''' Sub DrawingArea1_Draw()
   
   
   Dim pb As PaintBrush
   Dim pb As PaintBrush
  Dim im As Image
    
    
  im = Image.Load("''/percorso/dell'immagine''")
   With Paint
   With Paint
  <FONT color=gray>' ''Creiamo un oggetto "PaintBrush" mediante l'immagine caricata:''</font>
  <FONT color=gray>' ''Creiamo un oggetto "PaintBrush" mediante l'immagine caricata:''</font>

Versione delle 12:58, 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" (isometria diretta), utilizziamo le risorse delle Classi Paint e PaintBrush |1| e poniamo sul Form una DrawingArea.

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:

Private im As Image


Public Sub  Form_Open()

  im = Image.Load("/percorso/dell'immagine")

' Rendiamo la "DrawingArea" delle medesime dimensioni dell'immagine caricata:
  With DrawingArea1
    .W = im.W
    .h = im.H
  End With

End


Public Sub DrawingArea1_Draw()

 Dim pb As PaintBrush
 
  With Paint
' Creiamo un oggetto "PaintBrush" mediante l'immagine caricata:
    pb = Paint.Image(im)          
    pb.Scale(DrawingArea1.W / im.W, DrawingArea1.H / im.H)

' I valori associati ai parametri di questo metodo devono
' essere sempre pari alla metà della dimensione dell'immagine caricata:
    .Translate(125, 125)
' Ruotiamo l'immagine di 45° in senso antiorario:
    .Rotate(Rad(45))
    .Translate(-125, -125)
    .Brush = pb
    .Rectangle(0, 0, DrawingArea1.W, DrawingArea1.H)
    .Fill
    .End
  End With
 
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 .