背景
windows做绘制时,为了美观,常常将一些图片或者窗口的四个角做成圆角。例如QQ窗口:
圆角的实现方案总结
- 其实总结起来非常的简单,就两个步骤:
- 计算窗口的边界剪切域
- 通过windows API
SetWindowRgn
设置该窗口的剪切域
- 其实原理就是,设置好边界剪切域之后,windows会将边界剪切域中的像素都去掉。
步骤详解
1. 计算窗口的边界剪切域
- MFC中可利用
CRgn
类 - 使用
CreateRectRgn
创建边界剪切域- 可用
CreateRoundRectRgn
创建圆角矩形区域 CreateEllipticRgn
创建椭圆形剪切域CreatePolygonRgn
创建多边形剪切域
- 可用
- 使用
CombineRgn
来修改边界剪切域,常用的位操作如下:RGN_AND
RGN_OR