VB 怎样实现圆角窗体?

如题所述

1.将窗体设置为无边框模式。2.代码Declare Function CreateRoundRectRgn Lib "gdi32" Alias "CreateRoundRectRgn" (ByVal X1 As Int32, ByVal Y1 As Int32, ByVal X2 As Int32, ByVal Y2 As Int32, ByVal X3 As Int32, ByVal Y3 As Int32) As Int32Declare Function SetWindowRgn Lib "user32" Alias "SetWindowRgn" (ByVal hWnd As Int32, ByVal hRgn As Int32, ByVal bRedraw As Boolean) As Int32 ‘GDI重绘API Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.LoadDim r As Integer = CreateRoundRectRgn(0, 0, Me.Width, Me.Height, 20, 20)'CreateRoundRectRgn参数([窗体左],[窗体顶],[窗体宽],[窗体高],[向左偏移大小],[向下偏移大小])SetWindowRgn(Me.Handle, r, True)Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As LongPrivate 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 LongPrivate Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As LongPrivate Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As LongPrivate Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As LongPrivate Const RGN_AND = 1Private MyRgn1 As LongPrivate MyRgn2 As LongPrivate MyRgn As LongPrivate Sub Form_Load()Dim w As Long, h As Longw = ScaleX(Me.Width, vbTwips, vbPixels)h = ScaleY(Me.Height, vbTwips, vbPixels)MyRgn = CreateRoundRectRgn(30, 30, w - 30, h - 30, 16, 16) '在此可改变参数以调整圆角大小Call SetWindowRgn(Me.hWnd, MyRgn, True) '改变窗口的区域为"MyRgn"Dim w As Long, h As Longw = ScaleX(Me.Width, vbTwips, vbPixels)h = ScaleY(Me.Height, vbTwips, vbPixels)MyRgn = CreateRoundRectRgn(0, 0, w - 0, h - 0, 16, 16) '在此可改变参数以调整圆角大小Call SetWindowRgn(Me.hWnd, MyRgn, True) '改变窗口的区域为"MyRgn"
温馨提示:答案为网友推荐,仅供参考