Differenze tra le versioni di "Ruotare un'immagine sul proprio asse centrale in una DrawingArea"

Da Gambas-it.org - Wikipedia.
Riga 30: Riga 30:
 
   
 
   
 
   With Paint
 
   With Paint
  <FONT Color=gray>' ''Pone il centro di rotazione al centro della "DrawingArea":</font>
+
  <FONT Color=gray>' ''Pone il centro di rotazione al centro della "DrawingArea".''
 +
' ''Il fulcro del Metodo ".Translate()" agisce da centro di rotazione intorno a una ipotetica circonferenza.''</font>
 
     .Translate(DrawingArea1.W / 2, DrawingArea1.H / 2)
 
     .Translate(DrawingArea1.W / 2, DrawingArea1.H / 2)
 
     .Rotate(Rad(c))
 
     .Rotate(Rad(c))

Versione delle 08:38, 29 gen 2022

Nel caso in cui si debba far ruotare in una DrawingArea un'immagine sul proprio asse centrale, sia essa quadrata o rettangolare, si potrà adottare il seguente codice:

Private DrawingArea1 As DrawingArea
Private im As Image
Private c As Short

Public Sub Form_Open()

 With Me
   .W = Screen.AvailableWidth
   .H = Screen.AvailableHeight
   .Arrangement = Arrange.Fill
 End With
 DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"
 
 im = Image.Load("/percorso/della/immagine")
 
End

Public Sub DrawingArea1_MouseUp()

 Do
   c += 10
   DrawingArea1.Refresh
   Wait 0.1
 Loop

End

Public Sub DrawingArea1_Draw()

 With Paint
' Pone il centro di rotazione al centro della "DrawingArea".
' Il fulcro del Metodo ".Translate()" agisce da centro di rotazione intorno a una ipotetica circonferenza.
   .Translate(DrawingArea1.W / 2, DrawingArea1.H / 2)
   .Rotate(Rad(c))
   .DrawImage(im, -im.W / 2, -im.H / 2, im.W, im.H, 1.0, Null)
   .End
 End With

End