اینم یه مدل دیگه:
Dim img As New Bitmap("C:\Users\Public\Pictures\Sample Pictures\Penguins.jpg")
Dim iAngel As Integer = 0
Private Sub Form_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
PictureBox1.BackColor = Color.Black
PictureBox1.SizeMode = PictureBoxSizeMode.Zoom
PictureBox1.Image = RotateImg(img, Convert.ToSingle(iAngel))
Button2.Text = "<" : Button3.Text = ">"
End Sub
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
iAngel -= 30 : If iAngel < 0 Then iAngel = 330
PictureBox1.Image = RotateImg(img, Convert.ToSingle(iAngel))
End Sub
Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
iAngel += 30 : If iAngel > 360 Then iAngel = 30
PictureBox1.Image = RotateImg(img, Convert.ToSingle(iAngel))
End Sub
Public Function RotateImg(ByVal bmpimage As Bitmap, ByVal angle As Single) As Bitmap
Dim w As Integer = bmpimage.Width
Dim h As Integer = bmpimage.Height
Dim pf As System.Drawing.Imaging.PixelFormat = Nothing
pf = bmpimage.PixelFormat
Dim tempImg As New Bitmap(w, h, pf)
Dim g As Graphics = Graphics.FromImage(tempImg)
g.DrawImageUnscaled(bmpimage, 1, 1)
g.Dispose()
Dim path As New GraphicsPath()
path.AddRectangle(New RectangleF(0.0F, 0.0F, w, h))
Dim mtrx As New Matrix()
mtrx.Rotate(angle)
Dim rct As RectangleF = path.GetBounds(mtrx)
Dim newImg As New Bitmap(Convert.ToInt32(rct.Width), Convert.ToInt32(rct.Height), pf)
g = Graphics.FromImage(newImg)
g.TranslateTransform(-rct.X, -rct.Y)
g.RotateTransform(angle)
g.InterpolationMode = InterpolationMode.HighQualityBilinear
g.DrawImageUnscaled(tempImg, 0, 0)
g.Dispose()
tempImg.Dispose()
Return newImg
End Function
موفق باشید .....