Imports System.Math Public Class Dial Public Property value() As Int16 Get Return Nothing End Get Set(ByVal value As Int16) Dim bm_in As New Bitmap(PictureBox1.BackgroundImage) Dim wid As Single = bm_in.Width Dim hgt As Single = bm_in.Height Dim corners As Point() = {New Point(0, 0), New Point(wid, 0), New Point(0, hgt), New Point(wid, hgt)} Dim cx As Single = wid / 2 Dim cy As Single = hgt / 2 Dim i As Long For i = 0 To 3 corners(i).X -= cx corners(i).Y -= cy Next i Dim theta As Single = Single.Parse(value) * PI / 180.0 Dim sin_theta As Single = Sin(theta) Dim cos_theta As Single = Cos(theta) Dim X As Single Dim Y As Single For i = 0 To 3 X = corners(i).X Y = corners(i).Y corners(i).X = X * cos_theta + Y * sin_theta corners(i).Y = -X * sin_theta + Y * cos_theta Next i Dim xmin As Single = corners(0).X Dim ymin As Single = corners(0).Y For i = 1 To 3 If xmin > corners(i).X Then xmin = corners(i).X If ymin > corners(i).Y Then ymin = corners(i).Y Next i For i = 0 To 3 corners(i).X -= xmin corners(i).Y -= ymin Next i Dim bm_out As New Bitmap(CInt(-2 * xmin), CInt(-2 * ymin)) Dim gr_out As Graphics = Graphics.FromImage(bm_out) ReDim Preserve corners(2) gr_out.DrawImage(bm_in, corners) PictureBox2.Image = bm_out End Set End Property End Class