如何实现不规则形状的窗口

slley 2003-09-09 10:52:31
我想让我的窗体变成圆形的、三角形的、椭圆形的......, 应该怎么做?
...全文
37 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
liujiaqiang 2003-09-09
  • 打赏
  • 举报
回复
用API吧,楼上的没错.
qiyousyc 2003-09-09
  • 打赏
  • 举报
回复
用API,去API调用版问。
jdsnhan 2003-09-09
  • 打赏
  • 举报
回复
API实现
可参考下面:
在PB下实现圆形的窗口:
首先在窗口定义下列局部外部函数(Local External Functions...):
FUNCTION ulong CreateEllipticRgn(ulong X1,ulong Y1,ulong X2,ulong Y2) LIBRARY
"gdi32.dll"
FUNCTION ulong SetWindowRgn(ulong hWnd,ulong hRgn,boolean bRedraw) LIBRARY
"user32.dll"
在窗口的open事件中加上:
long hrgn
long lres

hrgn=createellipticrgn(20,20,400,400)//其中参数为左上到右下的坐标值,可修改。
lres=setwindowRgn(handle(this),hrgn,true)
//记得在窗口中放置一个按钮关闭窗口,要不然……
---------------------------------------------------------------

long ll_handle
ws_position lws_pointapi[]

// 图形2

lws_pointapi[1].xpos = 1
lws_pointapi[1].ypos = 1

lws_pointapi[2].xpos = 800
lws_pointapi[2].ypos = 1

lws_pointapi[3].xpos = 800
lws_pointapi[3].ypos = 41

lws_pointapi[4].xpos = 1
lws_pointapi[4].ypos = 41

lws_pointapi[5].xpos = 1
lws_pointapi[5].ypos = 610

lws_pointapi[6].xpos = 830
lws_pointapi[6].ypos = 610

lws_pointapi[7].xpos = 830
lws_pointapi[7].ypos = 75

lws_pointapi[8].xpos = 35
lws_pointapi[8].ypos = 75

lws_pointapi[9].xpos = 35
lws_pointapi[9].ypos = 586

lws_pointapi[10].xpos = 1
lws_pointapi[10].ypos = 586 //多边形各个顶点坐标值

ll_handle = CreatePolygonRgn(lws_pointapi[], 10, 1)
//其中第 1 个参数为多边形各个顶点坐标值的数组
//其中第 2 个参数为多边形边数,可修改,配合数组值
//其中第 3 个参数为填充模式 ALTERNATE /WINDING
SetwindowRgn(handle(this), ll_handle, true)

放在你的控件中,你的控件就变成了多边形

函数声明为
Function ulong CreatePolygonRgn (ref ws_position lppt[], int cPoints, int fnPolyFillMode ) Library "gdi32.dll"

FUNCTION ulong SetWindowRgn(ulong hWnd,ulong hRgn,boolean bRedraw) LIBRARY "user32.dll"

1,077

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧