[ATL/WTL]_[Gdiplus]_[实现按钮的阴影效果]

场景

  1. WTL开发时, 由于界面需要, 很多按钮都是奇形怪状的. 比如卡片形状, 圆角矩形等等. 只要是点击能响应一个事件的, 我们都可以看做是一个异形按钮. 其中让按钮呈现立体效果, 动画效果等一直是实现自定义按钮的难点.

  2. 系统按钮一般是带3D效果的按钮. 我们这里实现自带阴影效果的按钮一样具备很好的特效, 阴影按钮特别适合在面积比较大的卡片按钮上.

说明

  1. Gdiplus窗口实现阴影效果可以参考 VC++界面编程之–阴影窗口的实现详解. 这个效果不合适自定义的按钮,因为按钮并不是顶层窗口. 实际上可以参考绘制阴影的部分在按钮的部分区域绘制阴影效果,这样也是可以的, 这样也省了创建额外窗口的开销.

  2. Gdiplus实现阴影的其中一种方式是使用PathGradientBrush, 也就是渐变的画刷来绘制阴影部分. 其实也很好理解, 因为阴影部分其实也是模糊的黑色效果. 在借助graphics.ExcludeClip来排除正常的按钮部分, 只绘制阴影区域, 能很好的不影响正常的区域.

例子

图示
系统按钮
在这里插入图片描述

阴影按钮

你可能感兴趣的:(ATL/WTL界面开发,GDI+编程日积月累)