实现任意旋转:在窗体上加一个picture1(内加载一张图片), 一个picture2, 一个commandOption Explicit Const Pi = 3.14Private Sub Command1_Click() 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 JiaoDu As Double Dim HuDu As Double JiaoDu = 45 ' 可以改动这个角 度 HuDu = JiaoDu * 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 And Y3 > 0 And Y3 < Picture1.ScaleHeight - 1 Then Picture2.PSet (x, y), Picture1.Point(X3, Y3) End If Next y Next xEnd Sub
http://support.microsoft.com/default.aspx?scid=kb;EN-US;186260
Const Pi = 3.14Private Sub Command1_Click()
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 JiaoDu As Double
Dim HuDu As Double
JiaoDu = 45 ' 可以改动这个角 度
HuDu = JiaoDu * 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 And Y3 > 0 And Y3 < Picture1.ScaleHeight - 1 Then
Picture2.PSet (x, y), Picture1.Point(X3, Y3)
End If
Next y
Next xEnd Sub