找回密码
 加入
搜索
查看: 9230|回复: 16

[AU3基础] 怎么让有背景的无边窗口边角圆角化呢?

 火.. [复制链接]
发表于 2011-11-6 10:38:14 | 显示全部楼层 |阅读模式
本帖最后由 w55554 于 2011-11-7 00:18 编辑

怎么屏蔽窗口背景图片每个角的颜色,使其透明呢?达到窗口圆角化?

如下图
原图,背景图片



程序运行后的效果



补充说明:我是想让程序把四个角的红色背景给屏蔽了,来达到角的圆滑。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-11-6 12:01:16 | 显示全部楼层
有很多透明的 SKF 主题文件 自己加个皮肤 应该就能搞定
发表于 2011-11-6 13:22:31 | 显示全部楼层
本帖最后由 happytc 于 2011-11-6 13:24 编辑

回复 1# w55554

你要啥圆角效果呢?

$hGui = GUICreate("GUIRoundCorner", 500, 300, -1, -1, 0x80000000)

_GUIRoundCorners($hGUI, 0, 0, 20, 20)
GUISetState()

Do
Until GUIGetMsg() == -3


Func _GUIRoundCorners($h_win, $i_x1, $i_y1, $i_x3, $i_y3)
        Local $XS_pos, $XS_ret, $XS_ret2
        $XS_pos = WinGetPos($h_win)
        $XS_ret = DllCall("gdi32.dll", "long", "CreateRoundRectRgn", "long", $i_x1, "long", $i_y1, "long", $XS_pos[2], "long", $XS_pos[3], "long", $i_x3, "long", $i_y3)
        If $XS_ret[0] Then
                $XS_ret2 = DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $h_win, "long", $XS_ret[0], "int", 1)
        EndIf
EndFunc

评分

参与人数 1金钱 +20 贡献 +3 收起 理由
lixiaolong + 20 + 3

查看全部评分

发表于 2011-11-6 14:03:29 | 显示全部楼层
CreateRoundRectRgn,这个圆角是不光滑的
发表于 2011-11-6 15:06:26 | 显示全部楼层
CreateRoundRectRgn,这个圆角是不光滑的
seniors 发表于 2011-11-6 14:03

   已经给你指了方向了,如此简单的东西
总不能啥都要别人喂到你嘴边吧
发表于 2011-11-6 19:40:12 | 显示全部楼层
学习了。不错
发表于 2011-11-6 20:29:03 | 显示全部楼层
回复 3# happytc
学习了,感谢!
发表于 2011-11-7 08:52:10 | 显示全部楼层
不规则PNG,论坛类似文章
发表于 2011-11-7 11:02:54 | 显示全部楼层
这个皮肤很惊艳啊
发表于 2011-11-7 16:13:20 | 显示全部楼层
很漂亮啊!谢谢!
发表于 2011-11-7 16:31:31 | 显示全部楼层
发现这个程序的名字有点雷 雷锋
发表于 2011-11-7 19:55:07 | 显示全部楼层
直接调用 png 图片就行了
发表于 2011-11-7 21:59:23 | 显示全部楼层
谢谢3楼的兄弟。。。。
发表于 2011-11-8 15:35:00 | 显示全部楼层
学习了。很好。
发表于 2011-11-8 22:49:55 | 显示全部楼层
有一个很简单的办法,只是效果没那么平滑。如果你的背景图边角颜色分明的话可以使用,不需要额外的文件和代码
给窗口设置 $WS_POPUP, $WS_EX_LAYERED 样式,效果见下图
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>

GUICreate("我的动画窗口", 600, 409, -1, -1, $WS_POPUP, $WS_EX_LAYERED)
GUICtrlCreatePic(@DesktopDir & "\bg.bmp", 0, 0, 0, 0)

GUISetState()

    ; 运行 GUI,直到对话框窗口关闭
While 1
        $msg = GUIGetMsg()
        Switch $msg
                Case -3
                        Exit
        EndSwitch
WEnd
图中的背景图片我用PS将边角颜色换成 0xff00f0,再保存为BMP格式,不用JPG是因为有压缩导致边角变色而不能屏闭。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 18:26 , Processed in 0.088807 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表