本帖最后由 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[0], $CS_DROPSHADOW))
注:对于XP系统,建议先通过SPI_SETDROPSHADOW使能阴影效果(有可能会被用户关闭)。官网有个UDF函数_GuiSetDropShadow,用起来很简单。
想问的是,如何实现阴影环绕效果(下图):
这个效果真的超赞,被我PS难看了。
----------------------------------------
蛋蛋说得对:也许就是用了张羽化的图片,而不是后期处理的。 |