Obrócić obraz według dowolnego kątu VB.NET

Public Class Form1

    Dim wiggle As Bitmap
    Dim tim As Timer

    Sub MoveWiggle(sender As Object, e As EventArgs)
        Static rot As Integer = 0
        Panel1.Refresh()

        Using g = Panel1.CreateGraphics()
            Using fnt As New Font("Consolas", 12), brsh As New SolidBrush(Color.Red)
                ' the text will not be rotated or translated
                g.DrawString($"{rot}°", fnt, brsh, New Point(10, 10))
            End Using
            ' the image will be rotated and translated
            g.TranslateTransform(100, 100)
            g.RotateTransform(CSng(rot))
            g.DrawImage(wiggle, -80, 0)
        End Using

        rot = (rot + 10) Mod 360

    End Sub

    Private Sub bnPause_Click(sender As Object, e As EventArgs) Handles bnPause.Click
        Static isPaused As Boolean = False
        If isPaused Then
            tim.Start()
            bnPause.Text = "Pause"
        Else
            tim.Stop()
            bnPause.Text = "Start"
        End If

        isPaused = Not isPaused

    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        wiggle = New Bitmap("C:\temp\path3494.png")
        wiggle.SetResolution(96, 96) ' my image had a strange resolution
        tim = New Timer With {.Interval = 50}
        AddHandler tim.Tick, AddressOf MoveWiggle
        tim.Start()

    End Sub

    Private Sub Form1_Closing(sender As Object, e As EventArgs) Handles MyBase.Closing
        RemoveHandler tim.Tick, AddressOf MoveWiggle
        tim.Dispose()
        wiggle.Dispose()

    End Sub

End Class
Dizzy Dolphin