vc实现异形半透明窗体

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

 有时候项目中要求实现半透明异形的窗体,解决方案就是采用Layered窗口。

1、如果仅仅需要实现整体窗口的半透明,那么SetLayeredWindowAttributes已经可以满足需要了,可以通过设置alpha透明度或者color过滤的方式,具体可以参照相关API、

2、下面主要讲下,要实现像素级透明,即局部半透明。其中的关键就是UpdateLayeredWindow函数。调用该函数后,窗口上的所有子窗口均不可以见。此时需要完全的自绘处理,即directui方式。

UpdateLayeredWindow方式实现异型窗口 使用该种方法要注意几个问题: 1. 窗口属性必须是Top Window,子窗口(Win8之前的操作系统)不支持实现异形窗口 2. Layer Window没有WM_PAINT消息,需要自己调用OnPaint 3. 窗口属性可设置为 WS_POPUP | WS_VISIBLE, WS_EX_TOOLWINDOW | WS_EX_LAYERED 实现代码: CDC 阅读详情

相关推荐

Windows透明窗体实现源码与VC++编程实战

简介:透明窗体是Windows编程中一项具有视觉吸引力的技术,允许窗口部分或全部透明,广泛应用于浮动工具栏、提示框等界面设计。本文基于Microsoft Visual C++(VC)和MFC框架,深入讲解如何利用Windows API(如GDI/GDI+)和WS_EX_LAYERED扩展风格实现透明窗体。内容涵盖窗口类注册、透明色设置(SetLayeredWindowAttributes)、动态透明度控制(UpdateLayeredWindow)、自定义绘图及消息处理机制。

weixin_42573757的博客 716

(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...

qq_39529180的博客 5440

UpdateLayeredWindow与SetLayeredWindowAttributes

首先使用透明之前必须设置该窗口为层级窗口,即增加窗口的扩展风格WS_EX_LAYERED,增加的时候最好使用GetWindowlong获取Ex风格,然后加入后在SetWindowLong设置,最好不适用ModifyStyle增加(有时候不好使,我用vs10可以,但08却不行)。 UpdateLayeredWindow使用之后不会再发出WM_PAINT绘制消息,所有的绘制消息都由Updat...

dkopg24406的专栏 1095

分层窗口的说明与使用(1)

分层窗口虽然对于大部分人来说比较生僻,但它的功能却非常强大,能轻易实现一些比较漂亮的UI界面。

m0_46239139的博客 2094

VC半透明透明子窗体

对子窗口理解出现一些误区,导致实现跟随其它窗体的透明窗体时走了很多弯路。 1、有父窗口不一定具有WS_CHILD属性,父子窗口可以保证Z轴顺序,也就是保证子窗口在父窗口上面。 2、Layered Window不能有WS_CHILD属性,但是可以有父窗口,所以也能实现透明和异形效果。 3、Z轴顺序用父子窗口关系实现,透明窗体用Layered Window实现,就能很容易实现透明子窗体。 4、

xqyphp的专栏 1323

VB无所不能之四:制作透明和半透明窗体

VB无所不能之四:制作透明和半透明窗体   ——作者:钟声 博客地址:http://useway.blog.51cto.com     我们经常可以看到这样的窗体,觉得很炫,如图所示:             同样,对Windows系统方面的编程似乎首先想到的绝对不是VB,而大部分程序员想到的一定是VC。          其实,VB对于这个实现非常方便且简单,用到了“us...

weixin_34126557的博客 352

不规则窗体实现

      异形窗口的实现一般有两种方法:1、SetWindowRgn() 2、UpdateLayeredWindow()。第一种方法很通用,但是由于计算机表达Rgn的局限,做出的界面时常有毛边而影响效果。UpdateLayeredWindow只实用于32位带alpha通道的图片,由于Windows直接拿图片与桌面进行叠加透明处理,所以窗口边缘的毛边一般可通过阴影消除掉。使用UpdateL

潜行 6723

GDI+用PNG图片做半透明异型窗口

http://hi.baidu.com/bluew/blog/item/2ecbe58bf93a937d9f2fb4de.html2007-08-09 00:52   我是用PNG图片Alpha透明的方式做的窗口,这种方法一个好处就是不用通过编程来控制窗口外观。Delphi7设置一下窗体的BorderStyle、Color、Transparent、TransparentColor属性就可...

dkopg24406的专栏 600

VC6.0使用 SetLayeredWindowAttributes函数

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33923148的博客 497

不规则窗口——GDI+实现

  今天终于完成一个小心结,以前看到鱼鱼桌面秀那里那么炫的界面就想自己做一回,但是苦于没有实现思路,今天终于有了点眉目了。其实那些桌面秀的界面都是不规则的窗口,以前也有想过实现做不规则窗口,但由于各种原因没动手都没有完成。经过这两天来的搜索,终于完全明白怎么回事了。  要实现不规则窗口,有几种方法。  第一种是基于GDI的,这种方法是根据图片或者其他图案生成一个窗口区域也就是RGN,然后通

我的编程之旅 3302

Windows界面编程第七篇 文件拖拽(文件拖放)

转自http://blog.csdn.net/morewindows/article/details/8634451 本文配套程序下载地址为:http://download.csdn.net/detail/morewindows/5128654 转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8634451 欢迎

CV_2013的专栏 566

聚焦于在VC++环境中使用Windows API的SetLayeredWindowAttributes和UpdateLayeredWindow函数实现分层窗口(Layered Window)

聚焦于在VC++环境中使用Windows API的SetLayeredWindowAttributes和UpdateLayeredWindow函数实现分层窗口(Layered Window),以创建具有透明、半透明异形或复杂动画效果的窗口。分层窗口是Windows 2000及以上版本引入的高级窗口技术,允许创建具有透明、半透明异形效果的窗口,广泛应用于现代UI设计、动画效果、悬浮提示和自定义控件(如IM软件的聊天窗口、游戏界面的特效)。代码包含一个简单的动画示例(窗口渐变透明)。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 1147

UpdateLayeredWindow和SetLayeredWindowAttributes

前几天看到一位兄弟模仿Kugou7界面做的一个效果,下载源码一看之后发现在WM_PAINT没有一句自己的代码,只有DrawUI中有绘制的代码。顿时为之一震,原来UpdateLayeredWindow还有种这样的效果。于是乎在网上找了一下资料: 原文地址:http://alexkr.com/source-code/50/layered-windows-and-updatelayeredwind

把握自己。 2万+

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

QQ384697384的专栏 3901

用UpdateLayeredWindow实现任意异形窗口

[转]http://qjw.qiujinwu.com/blog/2012/11/03/UpdateLayeredWindow_window/ 对于SetWindowRgn,它通过一个Rgn来设置区域,这个Rgn一般可以从图片中读取,在这张图片中,将不需要显示的区域标记为一种特殊的颜色,这里有个问题,必须保证这种颜色没有被正常的区域使用,否则会被误伤。为了解决这个问题,可以考虑用两张图片,增加

heluan123132的博客 2187
上一篇: 解决vc界面闪烁问题
uiskinx
博客等级 码龄15年 1粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值