duilib设置透明窗口_专题:DUILIB Win32 透明效果

本文详细介绍了如何使用DUILIB库在Win32平台上创建透明和异形窗口效果,包括Layered Windows原理、设置透明度的方法、不规则窗口的创建以及DUILIB中的透明效果实现。通过SetWindowRgn、SetLayeredWindowAttributes和UpdateLayeredWindow等函数,实现了窗口的透明和控件的透明处理。同时,文中提到了在实现复杂透明效果时的解决方案和备课神器中遮罩效果的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Win32 透明效果相关基础知识

Layered Windows 分层窗口。这是Windows2000开始引入的概念,重新定义了窗口的Hit Testing方法,以前都是把窗口按rectangle的方式裁剪,而把窗口加上WS_EX_LAYERED的Style后就可以根据窗口的形状和像素 值进行Hit Testing,这样我们的不规则窗口就变成了真正意义上的独立窗口,而不是传统的被一个不可见的矩形窗口所包含。

分层窗口重绘方式、透明效果产生

创建不规则窗口的三种方式

1. 通过区域相关API设置窗口的区域SetWindowRgn;;

2. 通过 SetLayeredWindowAttributes来指定特殊的透明颜色,让背景图的部分位置全透从而实现窗口的“不规则”;

3. 通过 UpdateLayeredWindow来指定特殊颜色透明或者根据图片的ALPHA值来设置窗口全透。

UpdateLayeredWindow():直接更新一个分层的窗口的位置,大小,形状,内容和半透明度。优点是一劳永逸,不需要在窗口函数中响应各种重绘事件。

先用SetLayeredWindowAttributes()函数设置关于窗口透明度的信息,然后用传统方式,在窗口函数中响应各种重绘事件。

注:分层窗口上的控件会随着窗口一同变透明

解决方案:准备两个窗口,窗口A和窗口B,窗口A作为显示窗口,也就是异形窗口,而窗口B作为逻辑窗口,然后让这两个窗口 重叠在一块,也可以说是在窗口B上创建了窗口A,然后通过UpdateLayeredWindow对窗口A实现异形,因为窗口A在窗口B上,那

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值