首页 > Windows开发 > 详细

windows如何实现圆角窗口

时间:2019-09-17 00:50:44      阅读:248      评论:0      收藏:0      [点我收藏+]

背景

windows做绘制时,为了美观,常常将一些图片或者窗口的四个角做成圆角。例如QQ窗口:
技术分享图片

圆角的实现方案总结

  • 其实总结起来非常的简单,就两个步骤:
  1. 计算窗口的边界剪切域
  2. 通过windows API SetWindowRgn设置该窗口的剪切域
  • 其实原理就是,设置好边界剪切域之后,windows会将边界剪切域中的像素都去掉。

步骤详解

1. 计算窗口的边界剪切域

  • MFC中可利用CRgn
  • 使用CreateRectRgn创建边界剪切域
    • 可用CreateRoundRectRgn创建圆角矩形区域
    • CreateEllipticRgn创建椭圆形剪切域
    • CreatePolygonRgn创建多边形剪切域
  • 使用CombineRgn来修改边界剪切域,常用的位操作如下:
    • RGN_AND
    • RGN_OR
    • RGN_XOR
    • RGN_DIFF
    • RGN_COPY

2. 设置窗口的边界剪切域

  • 使用SetWindowRgnAPI设置窗口的剪切域
    • 需传入参数:边界剪切域的句柄HRGN
    • 需传入参数:是否触发重绘
  • 上述两步骤,可以简单的理解为:
    1. 给windows窗口设置要被“剪掉”的区域
    2. 以后windows系统域每次重绘的时候,都会把这部分区域“剪掉”,这样就实现了圆角或者其他丰富形状的窗口

参考连接

windows如何实现圆角窗口

原文:https://www.cnblogs.com/HelloGreen/p/11531092.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!