如何创建一个特殊圆矩形区域?(顶端两个角为圆弧形,底端两个角为90度角)
其实效果就像XP的窗口一样!
因为用CreateRectRgn只能创建一个四面都是圆弧形的圆矩形区域,并不能创建一个我所需的形状!
还请高手赐教!
问题点数:20、回复次数:3Top
1 楼Terry_05(Terry)回复于 2005-06-01 19:06:27 得分 0
自己顶起来!Top
2 楼Terry_05(Terry)回复于 2005-06-02 22:33:19 得分 0
期待解决Top
3 楼pasl(阿龙1)回复于 2005-06-02 23:53:27 得分 20
Option Explicit
Private Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
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 CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hrgn As Long, ByVal bRedraw As Boolean) As Long
Private Const RGN_AND = 1
Private Const RGN_COPY = 5
Private Const RGN_DIFF = 4
Private Const RGN_MAX = RGN_COPY
Private Const RGN_MIN = RGN_AND
Private Const RGN_OR = 2
Private Const RGN_XOR = 3
Private Sub form_load()
Dim hrgn1 As Long, hrgn2 As Long, hrgn As Long
hrgn1 = CreateRoundRectRgn(0, 0, 500, 500, 50, 50)
hrgn2 = CreateRectRgn(0, 450, 500, 500)
CombineRgn hrgn1, hrgn1, hrgn2, RGN_OR
Debug.Print "hrgn="; hrgn, "Hrgn1="; hrgn1, "Hrgn2="; hrgn2
SetWindowRgn Me.hWnd, hrgn1, True
End Sub
Top




