关于TransparentBlt和AlphaBlend的不同

EGO_Planner代码学习(三):px4ctrl代码流程 上节阅读了EGO_Planner的轨迹服务器部分的代码,其实质是将规划器生成的轨迹进行离散化,间隔10ms计算当前时刻在轨迹上的位置,并发送到话题上。这两天抽空看了下控制器部分的代码,在l这个软件包里,它的功能是进行px4的模式识别和上层控制,通过线性控制器把发布过来的位置命令解算成飞控的控制量,通过mavros发送给px4。下面就详细看一下它的启动过程。 阅读详情

一、关于TransparentBlt和AlphaBlend的不同
这两个函数在实际使用中是有不同的,关于此可以参见http://blog.youkuaiyun.com/jmunic/archive/2009/10/26/4728420.aspx,如果用一句话总结那就是:前者是图形带透明色的部分底图才能显示,后者是不管有没有透明色都根据透明程度显示底图。
在实际使用中有这样一个技巧:对于规则图形如果要半透明底图可以直接用AlphaBlend指定一个alpha常值,图形本身可以不带alpha信息,因为整副图都要显示不存在透明色此时用TransparentBlt没有意义。而对于不规则图形(如圆形按钮)图形外部是不需要显示出来的,它的边缘为了显示的时候不出现锯齿往往是有渐变色的,此时如果指定一个透明色并调用TransparentBlt在边缘就会出现锯齿,而且底图也会被盖住无法半透明。因此就需要图形本身带alpha信息,然后每个象素和要贴图位置的底图对应象素都进行AlphaBlend,这样才能达到既能平滑显示边缘又能半透明底图。

二、AlphaBlend和透明位图的深入思考
1、32位的位图可以带alpha通道,但是不知为何用photoshop无法生成这样的图。将带alpha的png可以通过IconWorkshop转换成带alpha通道的32位位图(见参考一)。有一点要说明的是对于PNG,alpha为0的地方在电脑上是不会显示的,而对于BMP,alpha为0的地方是会显示为黑色的。
2、AlphaBlend如果指定AlphaFormat为AC_SRC_ALPHA,SourceConstantAlpha为255则可以利用图像自带的alpha通道信息来绘图,这种方法当图像象素具有不同透明度的情况下很有用,特别是象那种不规则图形边缘有渐变色需要平滑显示时;否则是用统一的alpha值进行运算,这种方法在图像无或不关心alpha通道的时候比较常用。
3、通过IImage接口可以把PNG转成ARGB保存到HBITMAP,在需要的时候按照(2)的方法贴图(见参考二),或者用IImage的Draw方法直接贴图(见参考三),但是因为每次都要解码(瓶颈)会影响速度。
4、在实际使用中发现方法(3)对32位带alpha通道的位图无法显示,但是在用SHLoadDIBitmap加载这种位图再用(2)的方法(见参考四)却可以,具体原因还不清楚,另外也可以通过临时DC进行两次AlphaBlend的的方法(可见参考五)。
5、有些边缘带特效的PNG转换成32位的位图时,因为特效区域的alpha是255(不透明)会变成白色,如果用方法(4)也会把这个白色显示出来,只能用方法(3),具体原因还不清楚。是否需要先将R、G、B和A分离出来进行运算?
6、上述的方法是需要系统有相应组件支持才行的,如果没有则要自实现。在参考MSDN中关于BLENDFUNCTION的说明中相关算法的前提下应该是可以实现的(见参考六)。

三、引用
参考一:http://bbs.crsky.com/read.php?tid=877300
参考二:http://www.winbile.net/bbs/blogs/ice520301/archive/2009/12/25/155.aspx
参考三:http://www.armce.com/bbs/thread-782-1-1.html
参考四:http://www.56jiemeng.com/a/mengjianguishen/2010/0413/74234.html
参考五:http://bottlerun.spaces.live.com/blog/cns!40009282A442F870!188.entry
参考六:http://blog.chinaunix.net/u2/61062/showart_2055492.html

***************************************************

新发现:如果指定目标高宽和源不同,则会有缩放功能,而且效果还不错

YOLOv11改进 | 损失函数改进篇 | EIoU、SIoU、WIoU、DIoU、FocusIoU等二十余种损失函数 这篇文章介绍了YOLOv11的重大改进,特别是在损失函数方面的创新。它不仅包括了多种IoU损失函数的改进和变体,如SIoU、WIoU、GIoU、DIoU、EIOU、CIoU,还融合了“Focus”思想,创造了一系列新的损失函数。这些组合形式的损失函数超过了二十余种,每种都针对特定的目标检测挑战进行优化。文章会详细探讨这些损失函数如何提高YOLOv11在各种检测任务中的性能,包括提升精度、加快收敛速度和增强模型对复杂场景的适应性。 阅读详情

相关推荐

Windows 11 的C盘User(用户)文件夹下的用户文件夹名称的修改

背景介绍:由于系统重装导致Windows 11的系统用户名与C盘User(用户)文件夹下的用户名文件夹(公用文件夹旁边的文件夹)出现名称不一致,事例中系统用户名命名为“寂萧”,User(用户)文件夹下的文件夹名称却是“77555”。【QQ邮箱前五位真的真的看着很别扭】注:改名有风险,三思而后行。User(用户)文件夹下的用户名是中文在某些软件的应用场景下产生不便,导致很多软件莫名其妙报错,甚至无法使用,笔者不建议修改为中文名。//和笔者一样的强迫症除外//

2302_79084172的博客 10万+

TransparentBlt函数的用法

最近Windows程序设计的作业老师让我们完成在游戏背景上贴人物图,并且人物能根据键盘的操作完成简单的走动,然后就遇到问题了……人物背景没办法透明化。 1、添加头文件和库 #include <windows.h> #pragma comment(lib,"Msimg32.lib") //TransparentBlt函数包含的库文件 2、关于TransparentBlt函数参数的定...

wzqac2017的博客 4293

Calibre提参实战:如何用hcell和xcell文件精准屏蔽模块(附避坑指南)

本文详细解析了Calibre提参过程中hcell和xcell文件的应用技巧,帮助工程师精准屏蔽模块以优化寄生参数提取。通过对比hcell与xcell的核心差异、图形界面与命令行操作指南,以及常见问题排查方法,提升芯片后端设计效率。附避坑指南,解决EETOP论坛热议的模块丢失问题。

weixin_26795617的博客 438

AlphaBlend

AlphaBlend实现透明效果,不过只能针对某块区域进行alpha操作,透明度可设。TransparentBlt可以针对某种颜色进行透明,不过透明度不可设。 AlphaBlend:BLENDFUNCTION bn;bn.AlphaFormat = 0;bn.BlendFlags = 0;bn.BlendOp = AC_SRC_OVER;bn.S

jmunic的专栏 1万+

强化学习Q值迭代的几何视角:从策略区域到快速收敛

在强化学习中,Q值迭代是求解最优策略的核心算法,其理论基础建立在贝尔曼不动点定理之上。该算法通过迭代更新Q函数,使其逐步逼近最优值函数。从几何视角看,整个Q函数空间可被视为一个高维流形,每个Q函数对应流形上的一个点,而贝尔曼最优算子则定义了流形上的变换轨迹。理解这一几何结构,特别是由策略超平面划分出的凸多面体区域,对于分析算法的收敛行为至关重要。在实际工程中,传统Q值迭代可能在高维或稀疏奖励环境下收敛缓慢,甚至陷入策略高原。通过引入策略区域缓存与自适应学习率等几何启发方法,可以更高效地导航策略空间,加速策略

weixin_30444111的博客 317

MIC(Maximal Information Coefficient)最大互信息系数

MIC(Maximal Information Coefficient)最大互信息系数是一种用于衡量两个变量之间相关性的统计量。它扩展了传统的互信息(MI)和条件互信息(CMI)的概念,具有更广泛的应用范围。MIC能够捕获包括功能性和非功能性的广泛的关联,具有普遍性和公平性。普遍性意味着在足够的样本量下,MIC能够捕捉到广泛的相关关系,而不仅仅局限于特定的功能类型;公平性则意味着MIC对不同类型的包含同等噪声的关系给出了相似的分数。需要注意的是,虽然MIC具有很多优点,但它也有一些局限性。

qlkaicx的博客 4604

透明位图的显示

包含透明色的位图的绘制方法有多种,最简单的方法是调用现成的函数:TransparentBlt,也可以通过自己的代码实现类似TransparentBlt的功能,实现过程也有两种形式,一种是事先做一张掩码位图,另一种是动态生成掩码位图。本文将介绍动态生成掩码位图绘制具有透明区域位图的方法。一、TransparentBlt 函数的使用 TransparentBlt 函数在Windows98/Windo...

weixin_34062469的博客 493

深入剖析QWEN 2.5模型架构:从GQA到RoPE的技术实现

本文深入解析了QWEN 2.5模型架构,重点介绍了其创新的GQA(分组查询注意力)和RoPE(旋转位置编码)技术实现。通过详细代码解读,展示了这些技术如何提升模型的计算效率和长文本处理能力,适用于代码生成和数学推理等任务。文章还提供了实践部署建议和调优经验,帮助开发者更好地应用这一先进模型。

weixin_42548816的博客 389

关于TransparentBlt 透明显示问题

包含透明色的位图的绘制方法有多种,最简单的方法是调用现成的函数:TransparentBlt,也可以通过自己的代码实现类似TransparentBlt的功能,实现过程也有两种形式,一种是事先做一张掩码位图,另一种是动态生成掩码位图。本文将介绍动态生成掩码位图绘制具有透明区域位图的方法。一、TransparentBlt 函数的使用TransparentBlt 函数在Windows98/Win

zhoubl668的专栏:远帆,梦之帆! 1万+

提示词注入攻击全面解析与防御策略

提示词注入(Prompt Injection)是指攻击者通过精心构造的输入内容,操纵或欺骗AI系统执行非预期行为的技术手段。这种攻击类似于传统的SQL注入或XSS攻击,但其目标是AI模型的提示词处理机制而非数据库或网页。提示词注入利用了大语言模型的一个基本特性:它们被设计为遵循指令。攻击者通过在用户输入中嵌入特定指令,试图覆盖或绕过系统原有的安全限制和行为规则,让模型执行本不应该执行的操作。深度防御:实施多层次防御策略,不依赖单一安全措施持续更新:随着攻击技术的发展不断更新防御措施安全设计优先。

免责声明:本资料部分整理自合法网络公开渠道,部分为个人学习积累成果,仅作学习参考、学术交流使用。所收费用仅为资料搜集整理的时间劳务酬劳。版权归原作者及出版方所有,本人不承担相关版权及内容法律责任,若有侵权请告知,即刻删除处理。 4206

23、电生理与CSD分析:探索大脑活动的前沿技术

本文介绍了电生理与电流源密度(CSD)分析在探索大脑活动中的前沿应用。从电生理技术的发展现状,到局部场电位(LFPs)的起源与解释,重点阐述了CSD分析的原理、实验方法及其在绘制皮层兴奋流、解析突触输入和研究自发振荡中的广泛应用。文章还总结了该领域的优势与挑战,并展望了技术改进、多模态融合、数据分析创新及临床拓展的未来方向,展示了这些技术在揭示大脑功能机制中的关键作用。

Apple的专栏 119

wince 下Transparent的实现

透明图片的实现,用TransparentBlt 函数来实现,可以自定义透明色。 透明窗口的实现有多种方法,根据不同的需要可以采用不同的方式。 AlphaBlend 用GetDC得到需要透过来的窗口的dc,然后将其内容拷贝到目标DC上,或者将原窗口的背景作为目标DC的brush。 OVERLAY方式      如果在应用程序

tather的专栏 1733

huggingface高速下载模型的实战代码

本文主要介绍了huggingface高速下载模型的实战代码,尤其是无法通过国内源进行下载的huggingface模型,希望能对学习大模型的同学们有所帮助。需要特别说明的是,本文的代码是完全原创的,即能够最大限度利用宽度的速度,而且还能实现断点续传。 文章目录 1. 背景 2. 实战代码

herosunly的博客 29万+

有关CBitMap 、CImage的使用

今天用到了CBitMap ,突然前段时间使用的CImage这个类,所以就想看看之前怎么用的这个,顺便写写了! 1)CBitMap 的使用: 在窗口中贴图      过程:   1、创建位图 CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP1); 2、创建兼容DC CDC dcCompatible; dcCompatible.CreateCom

zhoxier的专栏 7931

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

TransparentBlt 与AlphaBlend

AlphaBlend实现透明效果,不过只能针对某块区域进行alpha操作,透明度可设。 TransparentBlt可以针对某种颜色进行透明,不过透明度不可设。   AlphaBlend: BLENDFUNCTION bn; bn.AlphaFormat = 0; bn.BlendFlags = 0; bn.BlendOp = AC_SRC_OVER; bn.Sou

小龙王2010 1344

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

AlphaBlend与TransparentBlt能组合使用么?

如题,下面的就是代码了,TransparentBlt能使图片一个色透明,而AlphaBlend能使整个图片半透明,但就是想不出怎么一起使用,还是,这方法是不可能实现的?最好高手们用一个图片做一个实例出来,嗯,这样比较容易明白吧。  CDC m_cdc;  CBitmap m_bitmap;  CDC *pwnd = GetDC();  BLENDFUNCTION bl;  bl.Blen

lalian3329的博客 488

BitBlts, AlphaBlend, TransparentBlt, 和 StretchBlt 有 GPU 加速

这阵子在推倒 GDI 自己写一套图像基础函数,但是图像拷贝的性能就是上不去,远不如 WIndows 的 GDI 函数快。 一方面是算法优化的原因,另一方面我也在猜测系统是不是使用了 GPU 加速。然后我就搜索了一下,发现果然如此。 GDI rendering in Windows 7 The driver model used in Windows Vista required that

FUN 1427
上一篇: 应用程序获得ARM的cpuid
下一篇: WM_CLOSE、WM_QUIT、WM_DESTROY区别
alien75
博客等级 码龄25年 195粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值