admin管理员组文章数量:1130349
背景
windows做绘制时,为了美观,常常将一些图片或者窗口的四个角做成圆角。例如QQ窗口:
圆角的实现方案总结
- 其实总结起来非常的简单,就两个步骤:
- 计算窗口的边界剪切域
- 通过windows API
SetWindowRgn设置该窗口的剪切域
- 其实原理就是,设置好边界剪切域之后,windows会将边界剪切域中的像素都去掉。
步骤详解
1. 计算窗口的边界剪切域
- MFC中可利用
CRgn类 - 使用
CreateRectRgn创建边界剪切域- 可用
CreateRoundRectRgn创建圆角矩形区域 CreateEllipticRgn创建椭圆形剪切域CreatePolygonRgn创建多边形剪切域
- 可用
- 使用
CombineRgn来修改边界剪切域,常用的位操作如下:RGN_ANDRGN_ORRGN_XORRGN_DIFFRGN_COPY
2. 设置窗口的边界剪切域
- 使用
SetWindowRgnAPI设置窗口的剪切域- 需传入参数:边界剪切域的句柄
HRGN - 需传入参数:是否触发重绘
- 需传入参数:边界剪切域的句柄
- 上述两步骤,可以简单的理解为:
- 给windows窗口设置要被“剪掉”的区域
- 以后windows系统域每次重绘的时候,都会把这部分区域“剪掉”,这样就实现了圆角或者其他丰富形状的窗口
参考连接
- SetWindowRgn
- SetWindowRgn函数的应用——绘制个性化形状的窗口
- C++/MFC-GDI绘图之CRgn区域,CFile
转载于:https://wwwblogs/HelloGreen/p/11531092.html
背景
windows做绘制时,为了美观,常常将一些图片或者窗口的四个角做成圆角。例如QQ窗口:
圆角的实现方案总结
- 其实总结起来非常的简单,就两个步骤:
- 计算窗口的边界剪切域
- 通过windows API
SetWindowRgn设置该窗口的剪切域
- 其实原理就是,设置好边界剪切域之后,windows会将边界剪切域中的像素都去掉。
步骤详解
1. 计算窗口的边界剪切域
- MFC中可利用
CRgn类 - 使用
CreateRectRgn创建边界剪切域- 可用
CreateRoundRectRgn创建圆角矩形区域 CreateEllipticRgn创建椭圆形剪切域CreatePolygonRgn创建多边形剪切域
- 可用
- 使用
CombineRgn来修改边界剪切域,常用的位操作如下:RGN_ANDRGN_ORRGN_XORRGN_DIFFRGN_COPY
2. 设置窗口的边界剪切域
- 使用
SetWindowRgnAPI设置窗口的剪切域- 需传入参数:边界剪切域的句柄
HRGN - 需传入参数:是否触发重绘
- 需传入参数:边界剪切域的句柄
- 上述两步骤,可以简单的理解为:
- 给windows窗口设置要被“剪掉”的区域
- 以后windows系统域每次重绘的时候,都会把这部分区域“剪掉”,这样就实现了圆角或者其他丰富形状的窗口
参考连接
- SetWindowRgn
- SetWindowRgn函数的应用——绘制个性化形状的窗口
- C++/MFC-GDI绘图之CRgn区域,CFile
转载于:https://wwwblogs/HelloGreen/p/11531092.html
版权声明:本文标题:windows如何实现圆角窗口 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1749553191a2384203.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论