Ruotare un'immagine sul proprio asse centrale in una DrawingArea
Vai alla navigazione
Vai alla ricerca
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()
While Object.IsValid(DrawingArea1)
c += 10
DrawingArea1.Refresh
Wait 0.1
wend
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