- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
UCGUI中的实现透明窗体的原理
UCGUI中的实现透明窗体的原理
作者:UCGUI
邮箱:UCGUI@163.com
主页:
时间:2006-12-18
版本: v
版本 说明 时间 v 深入解析UCGUI透明窗体支持原理。
实现UCGUI上的半透明窗体效果 2006-12-18
摘要: 有很多朋友不太明白UCGUI中如何实现透明窗体,虽然有些朋友曾经讨论过UCGUI中透明窗体的实现,但涉及到对UCGUI核心结构的改动, 本文深入解析UCGUI的透明窗体的支持原理,从剪切处理以及重绘方面全面讲解透明窗体的支持要点,并着手修改UCGUI以达到半透明窗体的效果,并不改动UCGUI的上层源码,而仅仅将修改局限于底层的LCD图形驱动当中,无须更改UCGUI本身。
目录
一. 透明处理的本质.
二. UCGUI中透明窗体支持.
三. MemDev下实现透明窗体的问题.
四. 透明窗体是否仅绘图时进行透明处理即可?
五. 修改后的代码下载.一. 透明处理的本质。
1.透明显示的原理.
假设一张图片A与B,如果B是透明的,其意即,透明B可以看到A,但并不是完全看到A,只是看到A的朦胧的影象。在图形处理上,其实就是在A上面再显示B的时候,对B上面的每个点的颜色做了处理,简单的说就是与A的颜色按比例进行了一个混合,混合的时候是按照R、G、G分别进行混合的.
2.透明显示的计算公式
alpha是透明度,亦即显示B时B的每个象素点与A的相同位置的象素点进行混合的比例系数,R(b)_new/G(b)_new/B(b)_new为计算所得的新的B要显示的象素点的R/G/B颜色分量,R(b)/G(b)/B(b)为B本来象素点要显示的象素点的R/G/B颜色分量,R(a)/G(a)/B(a)为A的点的R/G/B颜色分量.
R(b)_new = R(b)*(1-alpha) + R(a)*alpha;
G(b)_new = G(b)*(1-alpha) + G(a)*alpha;
B(b)_new = B(b)*(1-alpha) + B(a)*alpha;
3.实现窗体透明显示面临的问题
经过这样合成之后,就可以获得B透明显示于A,即可以看到A又可以看到B的效果。但是这里其实也暗示了一个问题:
透明的图片B是在A的基础上显示的,即是在A显示之后再处理B,所以考虑一下我们下面要讨论的透明窗体:
[1].窗体要透明,则必须总是在不透明的窗体之后绘制,不然就会被其它窗体挡住了,这是窗体Z序的问题。
[2].透明的窗体不会对一般窗体构成遮挡关系,这是窗体剪切计算时的问题.
下面我们就将讨论一下UCGUI中如何利透明显示的知道实现透明窗体.
二. UCGUI中透明窗体支持。
1.UCGUI中窗体的Z序.
为了帮助理解透明窗体在剪切时的处理,这里有必要介绍一下UCGUI中z序的知识.有的朋友以为UCGUI中没有Z序,其实在窗体的最基本的结构WM_Obj当中,就包含了Z序:
typedef struct {
GUI_RECT Rect; /* outer dimensions of window */
GUI_RECT InvalidRect; /* invalid rectangle */
WM_CALLBACK* cb; /* ptr to notification callback */
WM_HWIN hNextLin; /* Next window in linear list */
WM_HWIN hParent;
WM_HWIN hFirstChild;
WM_HWIN hNext;
U16 Status; /* Some status flags */
} WM_Obj;
hNextLin----------所有窗体的链表指针,将UCGUI中所有的窗体形成一个键表,便于查找窗体。
hNext-------------兄弟窗体的链表指针,这个成员其实就表示了兄弟窗体的Z序关系,hNext所指窗体Z序高.
hParent-----------父窗体指体指针,父窗体被子孙窗体剪切.
hFirstChild-------第一个子窗体指针,用于快速查找窗体的所有子窗体.
Status------------窗体属性,如透明窗体/窗体是否可称动等.
Z序-----按照通行的解释,就是除平面的X/Y轴,抽象出来表示窗体层次关系的Z轴,沿着Z轴Z序增高,Z序高的窗体挡住Z序低的窗体.
注:依我理解,表达更详细一点以及加深理解, 可以把Z序理解成多层概念:
[1].兄弟窗体之间,Z序高的窗体高于Z序低的窗体的所有子孙窗体.
[2].父子窗体之间,子孙窗体Z序高于父窗体,但子孙窗体的区域不能超过父窗体
您可能关注的文档
- NHX系统技术方案.doc
- NICI礼祺参展策划书.doc
- Nico LONWORKS豪华别墅智能家居系统.doc
- NICO LONWORKS智能家居方案.doc
- nike运动鞋市场调查报告.doc
- NJP2300C胶囊充填机质量风险管理[试题].doc
- Nkwc10年经济师考试人力资源管理专业知识与实务讲义(一).doc
- NLB地埋式一体化污水处理装置介绍(详细).doc
- No115隐患排查和治理.doc
- n亿新消费者的数字拼图.doc
- 2025至2030中国金属硅行业调研及市场前景预测评估报告.docx
- 2025至2030中国溴化丁基橡胶行业运营态势与投资前景调查研究报告.docx
- 2025至2030起重设备行业发展趋势分析与未来投资战略咨询研究报告.docx
- 2025至2030中国秸秆打捆机行业调研及市场前景预测评估报告.docx
- 2025至2030物联网设备和传感器行业发展趋势分析与未来投资战略咨询研究报告.docx
- 2025至2030火花直读光谱仪行业运营态势与投资前景调查研究报告.docx
- 2025至2030中国液基无针注射器行业市场深度研究与战略咨询分析报告.docx
- 2025至2030中国苯胍胺行业运营态势与投资前景调查研究报告.docx
- 2025至2030中国基于肿瘤学的分子诊断行业产业运行态势及投资规划深度研究报告.docx
- 2025至2030中国桅杆行业市场深度研究与战略咨询分析报告.docx
最近下载
- 基于高级健康评估法的一例卵巢癌合并多种并发症患者的护理查房.pptx
- 消毒供应室带教老师课件.pptx
- 应用文写作申请书课件.ppt VIP
- 高速公路标深基坑专项施工方案(共30页).docx VIP
- 统编版语文四年级上册第二单元《习作:我的家人》课件(共14张PPT).pptx VIP
- DB13_2209-2025 火电厂大气污染物排放标准.pdf VIP
- T_CECA-G《黑灯工厂评价规范》.pdf
- 苏教版小学一年级科学上册第三单元第9课《9 探究秋叶的秘密》精品课件.pptx VIP
- 破旧立新铸魂育人初中历史八上新教材(2025秋季版)核心变化与逐课细节对比讲义.docx
- 1.3 第一单元 观察物体 练习一(课件)2025-2026学年度人教版数学三年级上册.pptx VIP
文档评论(0)