我在绘制任意形状窗体时,WindowState=0时,为什么窗体只能显示一部分?
WindowState=2时,能全部显示,但是显示在屏幕的最左上角
代码如下: ''''''''''''''''''''''声明 API 函数
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
''''''''''''''''''''''声明 API 类型
Private Type POINTAPI
X As Long
Y As Long
End Type Const ALTERNATE = 1 '声明常量 ''''''''''''''''''''''声明多边形窗体的顶点数
Dim Points(30) As POINTAPI ''''''''''''''''''''''初始化窗体过程
Private Sub Form_Load() Me.Picture = LoadPicture(App.Path & "\image\Splash.JPG") '装入窗体的背景图片
''''''''''''''''''''''定义各个顶点坐标
Points(0).X = 11
Points(0).Y = 58
Points(1).X = 69
Points(1).Y = 58
Points(2).X = 57
Points(2).Y = 41
Points(3).X = 69
Points(3).Y = 27
Points(4).X = 91
Points(4).Y = 12
Points(5).X = 93
Points(5).Y = 16
Points(6).X = 115
Points(6).Y = 3
Points(7).X = 130
Points(7).Y = 4
Points(8).X = 137
Points(8).Y = 23
Points(9).X = 152
Points(9).Y = 14
Points(10).X = 165
Points(10).Y = 25
Points(11).X = 170
Points(11).Y = 46
Points(12).X = 165
Points(12).Y = 48
Points(13).X = 167
Points(13).Y = 54
Points(14).X = 186
Points(14).Y = 45
Points(15).X = 194
Points(15).Y = 57
Points(16).X = 195
Points(16).Y = 58
Points(17).X = 502
Points(17).Y = 58
Points(18).X = 502
Points(18).Y = 376
Points(19).X = 248
Points(19).Y = 376
Points(20).X = 242
Points(20).Y = 384
Points(21).X = 221
Points(21).Y = 384
Points(22).X = 221
Points(22).Y = 396
Points(23).X = 200
Points(23).Y = 398
Points(24).X = 177
Points(24).Y = 397
Points(25).X = 177
Points(25).Y = 384
Points(26).X = 175
Points(26).Y = 384
Points(27).X = 145
Points(27).Y = 385
Points(28).X = 132
Points(28).Y = 376
Points(29).X = 11
Points(29).Y = 376 ''''''''''''''''''''''生成多边形窗体
SetWindowRgn Me.hWnd, CreatePolygonRgn(Points(0), 30, ALTERNATE), True
End Sub
WindowState=2时,能全部显示,但是显示在屏幕的最左上角
代码如下: ''''''''''''''''''''''声明 API 函数
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
''''''''''''''''''''''声明 API 类型
Private Type POINTAPI
X As Long
Y As Long
End Type Const ALTERNATE = 1 '声明常量 ''''''''''''''''''''''声明多边形窗体的顶点数
Dim Points(30) As POINTAPI ''''''''''''''''''''''初始化窗体过程
Private Sub Form_Load() Me.Picture = LoadPicture(App.Path & "\image\Splash.JPG") '装入窗体的背景图片
''''''''''''''''''''''定义各个顶点坐标
Points(0).X = 11
Points(0).Y = 58
Points(1).X = 69
Points(1).Y = 58
Points(2).X = 57
Points(2).Y = 41
Points(3).X = 69
Points(3).Y = 27
Points(4).X = 91
Points(4).Y = 12
Points(5).X = 93
Points(5).Y = 16
Points(6).X = 115
Points(6).Y = 3
Points(7).X = 130
Points(7).Y = 4
Points(8).X = 137
Points(8).Y = 23
Points(9).X = 152
Points(9).Y = 14
Points(10).X = 165
Points(10).Y = 25
Points(11).X = 170
Points(11).Y = 46
Points(12).X = 165
Points(12).Y = 48
Points(13).X = 167
Points(13).Y = 54
Points(14).X = 186
Points(14).Y = 45
Points(15).X = 194
Points(15).Y = 57
Points(16).X = 195
Points(16).Y = 58
Points(17).X = 502
Points(17).Y = 58
Points(18).X = 502
Points(18).Y = 376
Points(19).X = 248
Points(19).Y = 376
Points(20).X = 242
Points(20).Y = 384
Points(21).X = 221
Points(21).Y = 384
Points(22).X = 221
Points(22).Y = 396
Points(23).X = 200
Points(23).Y = 398
Points(24).X = 177
Points(24).Y = 397
Points(25).X = 177
Points(25).Y = 384
Points(26).X = 175
Points(26).Y = 384
Points(27).X = 145
Points(27).Y = 385
Points(28).X = 132
Points(28).Y = 376
Points(29).X = 11
Points(29).Y = 376 ''''''''''''''''''''''生成多边形窗体
SetWindowRgn Me.hWnd, CreatePolygonRgn(Points(0), 30, ALTERNATE), True
End Sub
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货