VC创建不规则窗口

这篇博客介绍了创建不规则窗口的两种方法:通过SetLayeredWindowAttributes指定透明颜色实现,以及使用UpdateLayeredWindow根据图片ALPHA值设置透明。这两种方法都需要设置WS_EX_LAYERED扩展属性,并且在使用UpdateLayeredWindow时需要注意避免与SetLayeredWindowAttributes混合使用的问题。
摘要由CSDN通过智能技术生成

创建不规则窗口的三种方法:通过区域相关API设置窗口的区域SetWindowRgn;通过SetLayeredWindowAttributes来指定特殊的透明颜色,让背景图的部分位置全透从而实现窗口的“不规则”;通过UpdateLayeredWindow来指定特殊颜色透明或者根据图片的ALPHA值来设置窗口全透。

方法一是是真正的异形不规则窗口,而方法二、三则是通过部分区域全透来实现异形。这里只讨论后面两种方法,使用广泛也易于实现。

不管是SetLayeredWindowAttributes还是UpdateLayeredWindow在调用前都需要为窗口加上WS_EX_LAYERED扩展属性,否则API调用失败,详见MSDN;

<span style="color:#999999;">    DWORD dwExStyle=GetWindowLong(m_hWnd, GWL_EXSTYLE);
   ::SetWindowLong(m_hWnd, GWL_EXSTYLE, dwExStyle|WS_EX_LAYERED);</span>

1、使用SetLayeredWindowAttributes来创建不规则窗口

首先需要一张图,需要全透的地方我们用同一种颜色来填充:


需要透明的区域我用的纯白色0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值