

Private Sub Command1_Click()
Const Pi = 3.1415926
Dim x As Integer, y As Integer
Dim X1 As Integer, Y1 As Integer
Dim X2 As Double, Y2 As Double
Dim X3 As Double, Y3 As Double
Dim Angle As Integer
Dim HuDu As Single
Dim Pcolor As Long
'清除图片框Picture2
Picture2.Cls
'获得用户输入的角度
Angle = Val(Text1.Text)
'将角度转换为弧度
HuDu = Angle * Pi / 180
'设置图片框的度量单位为象素
Picture1.ScaleMode = vbPixels
Picture2.ScaleMode = vbPixels
'逐点旋转象素,并逐点复制
For x = 0 To Picture2.ScaleWidth
X1 = x - Picture2.ScaleWidth \ 2
For y = 0 To Picture2.ScaleHeight
Y1 = y - Picture2.ScaleHeight \ 2
'旋转象素点
X2 = X1 * Cos(-HuDu) + Y1 * Sin(-HuDu)
Y2 = Y1 * Cos(-HuDu) - X1 * Sin(-HuDu)
X3 = X2 + Picture1.ScaleWidth \ 2
Y3 = Y2 + Picture1.ScaleHeight \ 2
'如果象素点在待旋转位图内
If X3 > 0 And X3 < Picture1.ScaleWidth - 1 Then
If Y3 > 0 And Y3 < Picture1.ScaleHeight - 1 Then
'逐点复制位图
Pcolor = Picture1.Point(X3, Y3)
Picture2.PSet (x, y), Pcolor
End If
End If
Next y
Next x
End Sub
上次purana给我的程序有点复杂了,能不能只让图片在原控件中旋转,而无需将其再复制到另一个控件上旋转呀?另外,关于旋转的角度可以设置成点击图片弹出下拉菜单选取常用角度,里面设有任意角度选项,点击时再弹出可以输入任意角度的对话框!
谢谢,再费心帮我出出主意吧!