有时候项目中要求实现半透明异形的窗体,解决方案就是采用Layered窗口。
1、如果仅仅需要实现整体窗口的半透明,那么SetLayeredWindowAttributes已经可以满足需要了,可以通过设置alpha透明度或者color过滤的方式,具体可以参照相关API、
2、下面主要讲下,要实现像素级透明,即局部半透明。其中的关键就是UpdateLayeredWindow函数。调用该函数后,窗口上的所有子窗口均不可以见。此时需要完全的自绘处理,即directui方式。
墨衍会员
·
AI 创作全网分发
墨衍智能分发
本文由作者通过墨衍一键同步至各平台
1分发平台
700+累计阅读
759平均单平台
已同步平台
CSDN
微信公众号
微博
知乎
掘金
百家号
博客园
抖音
小红书
你的文章也可以这样分发
墨衍会员 ¥399起/年,写一次发全网
我也要 →
码龄15年
有时候项目中要求实现半透明异形的窗体,解决方案就是采用Layered窗口。
1、如果仅仅需要实现整体窗口的半透明,那么SetLayeredWindowAttributes已经可以满足需要了,可以通过设置alpha透明度或者color过滤的方式,具体可以参照相关API、
2、下面主要讲下,要实现像素级透明,即局部半透明。其中的关键就是UpdateLayeredWindow函数。调用该函数后,窗口上的所有子窗口均不可以见。此时需要完全的自绘处理,即directui方式。
当前文章被以下社区和专栏收录:
Windows透明窗体实现源码与VC++编程实战
简介:透明窗体是Windows编程中一项具有视觉吸引力的技术,允许窗口部分或全部透明,广泛应用于浮动工具栏、提示框等界面设计。本文基于Microsoft Visual C++(VC)和MFC框架,深入讲解如何利用Windows API(如GDI/GDI+)和WS_EX_LAYERED扩展风格实现透明窗体。内容涵盖窗口类注册、透明色设置(SetLayeredWindowAttributes)、动态透明度控制(UpdateLayeredWindow)、自定义绘图及消息处理机制。
(VC++源代码)透明变形窗体
本代码使用CRgn创建了一个部分透明的不规则窗体。 请用VC++6.0编译。
实现透明窗口(使用UpdateLayeredWindow)
使用UpdateLayeredWindow函数实现透明窗口。
如何使用UpdateLayeredWindow
将WS_EX_LAYERED样式添加到窗口中。例如,可以通过调用CreateWindowEx完成此操作: hWnd = CreateWindowEx(WS_EX_LAYERED,szWindowClass,szTitle,0, CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL); 创建窗口后,我们将加载带有Al...
UpdateLayeredWindow与SetLayeredWindowAttributes
首先使用透明之前必须设置该窗口为层级窗口,即增加窗口的扩展风格WS_EX_LAYERED,增加的时候最好使用GetWindowlong获取Ex风格,然后加入后在SetWindowLong设置,最好不适用ModifyStyle增加(有时候不好使,我用vs10可以,但08却不行)。 UpdateLayeredWindow使用之后不会再发出WM_PAINT绘制消息,所有的绘制消息都由Updat...
分层窗口的说明与使用(1)
分层窗口虽然对于大部分人来说比较生僻,但它的功能却非常强大,能轻易实现一些比较漂亮的UI界面。
VC半透明透明子窗体
对子窗口理解出现一些误区,导致实现跟随其它窗体的透明窗体时走了很多弯路。 1、有父窗口不一定具有WS_CHILD属性,父子窗口可以保证Z轴顺序,也就是保证子窗口在父窗口上面。 2、Layered Window不能有WS_CHILD属性,但是可以有父窗口,所以也能实现透明和异形效果。 3、Z轴顺序用父子窗口关系实现,透明窗体用Layered Window实现,就能很容易实现透明子窗体。 4、
VB无所不能之四:制作透明和半透明窗体
VB无所不能之四:制作透明和半透明窗体 ——作者:钟声 博客地址:http://useway.blog.51cto.com 我们经常可以看到这样的窗体,觉得很炫,如图所示: 同样,对Windows系统方面的编程似乎首先想到的绝对不是VB,而大部分程序员想到的一定是VC。 其实,VB对于这个实现非常方便且简单,用到了“us...
不规则窗体实现
异形窗口的实现一般有两种方法:1、SetWindowRgn() 2、UpdateLayeredWindow()。第一种方法很通用,但是由于计算机表达Rgn的局限,做出的界面时常有毛边而影响效果。UpdateLayeredWindow只实用于32位带alpha通道的图片,由于Windows直接拿图片与桌面进行叠加透明处理,所以窗口边缘的毛边一般可通过阴影消除掉。使用UpdateL
GDI+用PNG图片做半透明异型窗口
http://hi.baidu.com/bluew/blog/item/2ecbe58bf93a937d9f2fb4de.html2007-08-09 00:52 我是用PNG图片Alpha透明的方式做的窗口,这种方法一个好处就是不用通过编程来控制窗口外观。Delphi7设置一下窗体的BorderStyle、Color、Transparent、TransparentColor属性就可...
VC6.0使用 SetLayeredWindowAttributes函数
2019独角兽企业重金招聘Python工程师标准>>> ...
不规则窗口——GDI+实现
今天终于完成一个小心结,以前看到鱼鱼桌面秀那里那么炫的界面就想自己做一回,但是苦于没有实现思路,今天终于有了点眉目了。其实那些桌面秀的界面都是不规则的窗口,以前也有想过实现做不规则窗口,但由于各种原因没动手都没有完成。经过这两天来的搜索,终于完全明白怎么回事了。 要实现不规则窗口,有几种方法。 第一种是基于GDI的,这种方法是根据图片或者其他图案生成一个窗口区域也就是RGN,然后通
Windows界面编程第七篇 文件拖拽(文件拖放)
转自http://blog.csdn.net/morewindows/article/details/8634451 本文配套程序下载地址为:http://download.csdn.net/detail/morewindows/5128654 转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8634451 欢迎
聚焦于在VC++环境中使用Windows API的SetLayeredWindowAttributes和UpdateLayeredWindow函数实现分层窗口(Layered Window)
聚焦于在VC++环境中使用Windows API的SetLayeredWindowAttributes和UpdateLayeredWindow函数实现分层窗口(Layered Window),以创建具有透明、半透明、异形或复杂动画效果的窗口。分层窗口是Windows 2000及以上版本引入的高级窗口技术,允许创建具有透明、半透明或异形效果的窗口,广泛应用于现代UI设计、动画效果、悬浮提示和自定义控件(如IM软件的聊天窗口、游戏界面的特效)。代码包含一个简单的动画示例(窗口渐变透明)。
UpdateLayeredWindow和SetLayeredWindowAttributes
前几天看到一位兄弟模仿Kugou7界面做的一个效果,下载源码一看之后发现在WM_PAINT没有一句自己的代码,只有DrawUI中有绘制的代码。顿时为之一震,原来UpdateLayeredWindow还有种这样的效果。于是乎在网上找了一下资料: 原文地址:http://alexkr.com/source-code/50/layered-windows-and-updatelayeredwind
Layered windows and UpdateLayeredWindow 分层窗口
Layered windows and UpdateLayeredWindow 21 Apr 2006 | 1 Comment » Recently I was playing with transparent (layered) windows in Windows XP. The basic information about layered windows is avail
用UpdateLayeredWindow实现任意异形窗口
[转]http://qjw.qiujinwu.com/blog/2012/11/03/UpdateLayeredWindow_window/ 对于SetWindowRgn,它通过一个Rgn来设置区域,这个Rgn一般可以从图片中读取,在这张图片中,将不需要显示的区域标记为一种特殊的颜色,这里有个问题,必须保证这种颜色没有被正常的区域使用,否则会被误伤。为了解决这个问题,可以考虑用两张图片,增加

被折叠的 条评论
为什么被折叠?



