如何详述UpdateLayeredWindow实现不规则窗口技巧?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2565个文字,预计阅读时间需要11分钟。
目录+引言+Sample+放置子控件+Sample+其他问题+Bug+引言+前面提到,我们可以使用SetWindowRgn或SetLayeredWindowAttributes实现不规则以及半透明效果+对于SetWindowRgn,它通过一个Rgn来设置区域+
目录
- 引言
- Sample
- 放置子控件
- Sample
- 其他问题
- Bug
引言
前面提到,我们可以用SetWindowRgn或SetLayeredWindowAttributes实现不规则以及半透明的效果
对于SetWindowRgn,它通过一个Rgn来设置区域,这个Rgn一般可以从图片中读取,在这张图片中,将不需要显示的区域标记为一种特殊的颜色,这里有个问题,必须保证这种颜色没有被正常的区域使用,否则会被误伤。
为了解决这个问题,可以考虑用两张图片,增加一张单色的掩码图,这种方案带来了额外的管理开销。SetWindowRgn的好处是效率较高,对于大部分自绘的皮肤,一般只有四个角落有一些不规则,所以用SetWindowRgn是最好的选择。
- SetLayeredWindowAttributes可以将特定的窗口设置为某种透明度,也可以用它来过滤某种颜色,匹配的颜色会变成全透明。也就是类似于SetWindowRgn的效果。
本文共计2565个文字,预计阅读时间需要11分钟。
目录+引言+Sample+放置子控件+Sample+其他问题+Bug+引言+前面提到,我们可以使用SetWindowRgn或SetLayeredWindowAttributes实现不规则以及半透明效果+对于SetWindowRgn,它通过一个Rgn来设置区域+
目录
- 引言
- Sample
- 放置子控件
- Sample
- 其他问题
- Bug
引言
前面提到,我们可以用SetWindowRgn或SetLayeredWindowAttributes实现不规则以及半透明的效果
对于SetWindowRgn,它通过一个Rgn来设置区域,这个Rgn一般可以从图片中读取,在这张图片中,将不需要显示的区域标记为一种特殊的颜色,这里有个问题,必须保证这种颜色没有被正常的区域使用,否则会被误伤。
为了解决这个问题,可以考虑用两张图片,增加一张单色的掩码图,这种方案带来了额外的管理开销。SetWindowRgn的好处是效率较高,对于大部分自绘的皮肤,一般只有四个角落有一些不规则,所以用SetWindowRgn是最好的选择。
- SetLayeredWindowAttributes可以将特定的窗口设置为某种透明度,也可以用它来过滤某种颜色,匹配的颜色会变成全透明。也就是类似于SetWindowRgn的效果。

