xiehuahere 发表于 2012-10-18 16:37:45

如何实现窗体的阴影环绕效果【已解决】

本帖最后由 xiehuahere 于 2012-10-23 09:07 编辑

目前我知道如何实现drop shadow,即阴影出现在偏右下侧(下图):


实现方法为API调用,通过GetClassLong获取窗口原有风格后,再通过SetClassLong加上CS_DROPSHADOW风格。(插一个问题:这里API调用为什么不需要区分Unicode和ANSI?)
Const $GCL_STYLE = -26
Const $CS_DROPSHADOW = 0x20000
Local $result = DllCall("User32.dll", "dword", "GetClassLong", "hwnd", $hGUI, "int", $GCL_STYLE)
DllCall("User32.dll", "dword", "SetClassLong", "hwnd", $hGUI, "int", $GCL_STYLE, "long", BitOR($result, $CS_DROPSHADOW))
注:对于XP系统,建议先通过SPI_SETDROPSHADOW使能阴影效果(有可能会被用户关闭)。官网有个UDF函数_GuiSetDropShadow,用起来很简单。

想问的是,如何实现阴影环绕效果(下图):


这个效果真的超赞,被我PS难看了。

----------------------------------------
蛋蛋说得对:也许就是用了张羽化的图片,而不是后期处理的。

xms77 发表于 2012-10-18 21:48:12

这个阴影超赞,我想知道。

netegg 发表于 2012-10-19 09:59:14

本帖最后由 netegg 于 2012-10-19 10:07 编辑

记得官站上有一个,找不到了,win7底下的话看看_winapi_dwm*的那几个例子

netegg 发表于 2012-10-20 12:46:33

这个更像是边框羽化

ATHSJF 发表于 2012-10-20 22:02:33

额。。。。这个毛边效果 我也想知道怎么做= =不过右下角的已经很好了,谢楼主分享

xiehuahere 发表于 2012-10-21 21:08:22

回复 4# sliqi


为何从女人头像换成了蝎子头像,是被女人伤了心吗?
{:face (303):}

Neuis 发表于 2012-10-22 08:41:56

相当不错学习了

yhxhappy 发表于 2012-10-23 08:55:14

我都不知道阴影能通过API实现的,之前都是用PNG图片来做。

xiehuahere 发表于 2012-10-23 09:06:19

回复 5# netegg

嗯,可能蛋蛋的想法是对的。
也许就是用的羽化的图片。

netegg 发表于 2012-10-23 09:33:34

回复 11# xiehuahere
不是图片本身,api可以办到,不过不知道xp行不行,7里用dwm*那几个函数好像就行了
页: [1]
查看完整版本: 如何实现窗体的阴影环绕效果【已解决】