w55554 发表于 2011-11-6 10:38:14

怎么让有背景的无边窗口边角圆角化呢?

本帖最后由 w55554 于 2011-11-7 00:18 编辑

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

如下图
原图,背景图片



程序运行后的效果



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

uxuuexqyxwk 发表于 2011-11-6 12:01:16

有很多透明的 SKF 主题文件 自己加个皮肤 应该就能搞定

happytc 发表于 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, "long", $XS_pos, "long", $i_x3, "long", $i_y3)
        If $XS_ret Then
                $XS_ret2 = DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $h_win, "long", $XS_ret, "int", 1)
        EndIf
EndFunc

seniors 发表于 2011-11-6 14:03:29

CreateRoundRectRgn,这个圆角是不光滑的

happytc 发表于 2011-11-6 15:06:26

CreateRoundRectRgn,这个圆角是不光滑的
seniors 发表于 2011-11-6 14:03 http://www.autoitx.com/images/common/back.gif
   已经给你指了方向了,如此简单的东西
总不能啥都要别人喂到你嘴边吧

lfx99 发表于 2011-11-6 19:40:12

学习了。不错

xms77 发表于 2011-11-6 20:29:03

回复 3# happytc
学习了,感谢!

zcx880517 发表于 2011-11-7 08:52:10

不规则PNG,论坛类似文章

kyniel 发表于 2011-11-7 11:02:54

这个皮肤很惊艳啊

nxbigdaddy 发表于 2011-11-7 16:13:20

很漂亮啊!谢谢!

kyniel 发表于 2011-11-7 16:31:31

发现这个程序的名字有点雷 雷锋

ayumi502 发表于 2011-11-7 19:55:07

直接调用 png 图片就行了

devilma 发表于 2011-11-7 21:59:23

谢谢3楼的兄弟。。。。

wmwuwei1 发表于 2011-11-8 15:35:00

学习了。很好。

yhxhappy 发表于 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] 2
查看完整版本: 怎么让有背景的无边窗口边角圆角化呢?