這是壹個可讓矩形沿任意角度旋轉的代碼,在窗體上放壹個標簽,壹個文本框,壹個水平滾動條控件,如圖所示,然後將下列代碼復制進去即可:
Private?Declare?Function?CreateSolidBrush?Lib?"gdi32"?(ByVal?crColor?As?Long)?As?Long
'----------創建Region所需的函數、結構和常數-------------
Private?Declare?Function?CreateRectRgn?Lib?"gdi32"?(ByVal?x1?As?Long,?ByVal?y1?As?Long,?ByVal?x2?As?Long,?ByVal?y2?As?Long)?As?Long
Private?Declare?Function?FillRgn?Lib?"gdi32"?(ByVal?hdc?As?Long,?ByVal?hRgn?As?Long,?ByVal?hBrush?As?Long)?As?Long
Private?Declare?Function?DeleteObject?Lib?"gdi32"?(ByVal?hObject?As?Long)?As?Long
'------------旋轉、翻轉或縮放Region所需的函數、結構和常數-------------
Private?Declare?Function?ExtCreateRegion?Lib?"gdi32"?(lpXform?As?XFORM,?ByVal?nCount?As?Long,?lpRgnData?As?Any)?As?Long
Private?Declare?Function?GetRegionData?Lib?"gdi32"?(ByVal?hRgn?As?Long,?ByVal?dwCount?As?Long,?lpRgnData?As?Any)?As?Long
Private?Declare?Function?OffsetRgn?Lib?"gdi32"?(ByVal?hRgn?As?Long,?ByVal?X?As?Long,?ByVal?Y?As?Long)?As?Long
Private?Type?XFORM
eM11?As?Single
eM12?As?Single
eM21?As?Single
eM22?As?Single
eDx?As?Single
eDy?As?Single
End?Type
Const?pi?As?Single?=?3.1415926
Private?Sub?Form_Load()
HScroll1.Min?=?0
HScroll1.Max?=?360
HScroll1.Value?=?0
HScroll1.LargeChange?=?5
Text1.Text?=?0
Text1.Locked?=?True
End?Sub
Private?Sub?HScroll1_Change()
Text1.Text?=?HScroll1.Value
Dim?hRgn?As?Long
Dim?hBrush?As?Long
Dim?bytRegionData()?As?Byte
Dim?nSize?As?Long
Dim?xFrm?As?XFORM
Dim?nDegree?As?Long
nDegree?=?HScroll1.Value
hBrush?=?CreateSolidBrush(QBColor(CInt(Rnd()?*?15)))
hRgn?=?CreateRectRgn(0,?-100,?200,?0)
nSize?=?GetRegionData(hRgn,?0,?ByVal?0)
nSize?=?GetRegionData(hRgn,?0,?ByVal?0)
ReDim?bytRegionData(1?To?nSize)?As?Byte
nSize?=?GetRegionData(hRgn,?nSize,?bytRegionData(1))
With?xFrm
.eM11?=?Cos(nDegree?*?pi?/?180)
.eM12?=?-Sin(nDegree?*?pi?/?180)
.eM21?=?-.eM12
.eM22?=?.eM11
.eDx?=?0
.eDy?=?0
End?With
DeleteObject?hRgn
hRgn?=?ExtCreateRegion(xFrm,?nSize,?bytRegionData(1))
OffsetRgn?hRgn,?300,?300
FillRgn?Me.hdc,?hRgn,?hBrush
DeleteObject?hRgn
DeleteObject?hBrush
End?Sub