带阴影的浮动窗体的实现

   昨天设计部要求在软件的浮动小窗口的四周添加上阴影,本来以为很好做,直接拿一张带阴影的图像文件贴上去了。运行 起来完全不是那么回事,在不同的背景下看起来完全不一样,因为阴影是由黑到白渐变的,在白背景下慢慢溶入背景看起来很好,可是在深色背景下看起来四周的阴影看起来就没有渐变效果了,只是一圈灰边。
  在网上搜下关于窗体阴影的解决方案,还真不多,搜到两种。第一是在http://www.codeproject.com/KB/dialog/FrameShadow.aspx这个开源网站上,一个中国哥们用C++实现的仿vista阴影,主要采用UpdateLayeredWindow() 等API在窗体上画出比窗体大小更大的阴影,并且色彩等可任意调整。第二种是http://d.download.csdn.net/down/901180/yy0692下载的一个delphi源代码,是一个使用两个窗体模拟窗体阴影的例子。使用一个窗体放置普通的图片,使用另一个窗体绘制阴影,绘制阴影时直接使用编译到资源文件里的一个png图片。
  经研究,我决定使用第二种方式,原因嘛,语言合适,不用翻译。第二,使用图片方式对我来说方便,我可不想使用代码调整阴影颜色。将第二个哥们写的代码copy到我们的项目里,再将代码做一些改动:将窗体的父窗口设置为桌面、将窗体风格加上WS_EX_TOOLWINDOW、将两个窗体的显示与隐藏绑定到一起,然后大功告成。代码如下:

 

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值