国庆快乐,中求快乐!!!
求教如何能使图像旋转到和Picture2大小一样时停止,谢谢!!!
Option Explicit
Private Type POINTAPI
  x As Long
  y As Long
End TypePrivate Declare Function PlgBlt Lib "gdi32" (ByVal hdcDest As Long, _
lpPoint As POINTAPI, ByVal hdcSrc As Long, ByVal nXSrc As Long, _
ByVal nYSrc As Long, ByVal nWidth As Long, ByVal nHeight As Long, _
ByVal hbmMask As Long, ByVal xMask As Long, ByVal yMask As Long) As LongPrivate Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub 旋转_Click()
Dim S As Single, C As Single, Jw As Single, Jh As Single, zW As Single, zH As Single
Dim k As Integer, i As Integer, X As Integer, Y As Integer
Dim Pic As Picture
Dim Pt(2) As POINTAPI, dPt(2) As POINTAPI
Const PI = 3.14159265238 / 180
Picture1.Picture = LoadPicture("C:\家庭电子相册Vcd制作系统\as\B.jpg")
Set Pic = Picture1.Picture
k = 5 '旋转角度的增量
'x = ScaleWidth \ 2: y = ScaleHeight \ 2
Jw = Picture1.Width * k / 1080 '图片的宽度增量
Jh = Picture1.Height * k / 1080 '图片的高度增量
zW = Jw: zH = Jh
For i = 0 To 1080 Step k: X = i \ 2: Y = i \ 3: GoSub 100: Next
Sleep 1000 ', 静止1秒钟
Jw = -Jw: Jh = -Jh
For i = 1080 To 0 Step -k: X = i \ 2: Y = i \ 3: GoSub 100: Next
Set Pic = Nothing
Picture2.Cls
Exit Sub
100Picture1.PaintPicture Pic, 0, 0, zW, zHPt(0).X = -zW * 0.5: Pt(0).Y = -zH * 0.5
Pt(1).X = Pt(0).X + zW: Pt(1).Y = Pt(0).Y
Pt(2).X = Pt(0).X: Pt(2).Y = Pt(0).Y + zH
S = Sin(i * PI): C = Cos(i * PI)
dPt(0).X = Pt(0).X * C - Pt(0).Y * S + X
dPt(0).Y = Pt(0).X * S + Pt(0).Y * C + Y
dPt(1).X = Pt(1).X * C - Pt(1).Y * S + X
dPt(1).Y = Pt(1).X * S + Pt(1).Y * C + Y
dPt(2).X = Pt(2).X * C - Pt(2).Y * S + X
dPt(2).Y = Pt(2).X * S + Pt(2).Y * C + YPicture2.Cls
PlgBlt Picture2.hdc, dPt(0), Picture1.hdc, 0, 0, zW, zH, 0, 0, 0
zW = zW + Jw: zH = zH + Jh
Picture2.Refresh
DoEvents
Return
End Sub