1,486
社区成员
发帖
与我相关
我的任务
分享
Option Explicit
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function PlgBlt Lib "gdi32.dll" (ByVal hdcDest As Long, ByRef 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 Long
Private Const PI As Double = 3.1415926
Public Function TurnPic(ByVal ObjMe As Object, ByVal pObj1 As Object, ByVal pObj2 As Object, ByVal dThetaDeg As Double)
Dim pt(1 To 3) As POINTAPI, p4 As POINTAPI
Dim dx As Long, dy As Long
Dim I As Long, offsetX As Long, offsetY As Long
Dim Sida As Double
Dim MaxX As Long, MaxY As Long, MinX As Long, MinY As Long
Sida = dThetaDeg * PI / 180
dx = ObjMe.ScaleX(pObj1.Picture.Width, vbHimetric, vbPixels)
dy = ObjMe.ScaleX(pObj1.Picture.Height, vbHimetric, vbPixels)
pt(1).x = dy * Sin(Sida)
pt(1).y = dy - dy * Cos(Sida)
pt(2).x = pt(1).x + dx * Cos(Sida)
pt(2).y = pt(1).y + dx * Sin(Sida)
pt(3).x = 0: pt(3).y = dy
'p4不用在pt()之阵列,它是由pt(1)-pt(3)所推出
p4.x = pt(3).x + dx * Cos(Sida)
p4.y = pt(3).y + dx * Sin(Sida)
I = PlgBlt(pObj2.hDC, pt(1), pObj1.hDC, 0, 0, dx, dy, 0, 0, 0)
pObj2.Refresh
End Function
Private Sub Command1_Click()
TurnPic Me, Picture1, Picture2, 45 '调用旋转处理函数,旋转1度
End Sub