如何详述UpdateLayeredWindow实现不规则窗口技巧?

2026-05-01 14:085阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2565个文字,预计阅读时间需要11分钟。

如何详述UpdateLayeredWindow实现不规则窗口技巧?

目录+引言+Sample+放置子控件+Sample+其他问题+Bug+引言+前面提到,我们可以使用SetWindowRgn或SetLayeredWindowAttributes实现不规则以及半透明效果+对于SetWindowRgn,它通过一个Rgn来设置区域+

目录
  • 引言
  • Sample
  • 放置子控件
    • Sample
  • 其他问题
    • Bug

引言

前面提到,我们可以用SetWindowRgn或SetLayeredWindowAttributes实现不规则以及半透明的效果

对于SetWindowRgn,它通过一个Rgn来设置区域,这个Rgn一般可以从图片中读取,在这张图片中,将不需要显示的区域标记为一种特殊的颜色,这里有个问题,必须保证这种颜色没有被正常的区域使用,否则会被误伤。

为了解决这个问题,可以考虑用两张图片,增加一张单色的掩码图,这种方案带来了额外的管理开销。SetWindowRgn的好处是效率较高,对于大部分自绘的皮肤,一般只有四个角落有一些不规则,所以用SetWindowRgn是最好的选择。

  • SetLayeredWindowAttributes可以将特定的窗口设置为某种透明度,也可以用它来过滤某种颜色,匹配的颜色会变成全透明。也就是类似于SetWindowRgn的效果。
阅读全文

本文共计2565个文字,预计阅读时间需要11分钟。

如何详述UpdateLayeredWindow实现不规则窗口技巧?

目录+引言+Sample+放置子控件+Sample+其他问题+Bug+引言+前面提到,我们可以使用SetWindowRgn或SetLayeredWindowAttributes实现不规则以及半透明效果+对于SetWindowRgn,它通过一个Rgn来设置区域+

目录
  • 引言
  • Sample
  • 放置子控件
    • Sample
  • 其他问题
    • Bug

引言

前面提到,我们可以用SetWindowRgn或SetLayeredWindowAttributes实现不规则以及半透明的效果

对于SetWindowRgn,它通过一个Rgn来设置区域,这个Rgn一般可以从图片中读取,在这张图片中,将不需要显示的区域标记为一种特殊的颜色,这里有个问题,必须保证这种颜色没有被正常的区域使用,否则会被误伤。

为了解决这个问题,可以考虑用两张图片,增加一张单色的掩码图,这种方案带来了额外的管理开销。SetWindowRgn的好处是效率较高,对于大部分自绘的皮肤,一般只有四个角落有一些不规则,所以用SetWindowRgn是最好的选择。

  • SetLayeredWindowAttributes可以将特定的窗口设置为某种透明度,也可以用它来过滤某种颜色,匹配的颜色会变成全透明。也就是类似于SetWindowRgn的效果。
阅读全文