5470|10

68

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

fade in / fade out [复制链接]

您好.
  楼下的兄弟姐妹们好.
  这个月一直有个问题让我困扰着我.
  在CE中是否可以真正意义上的实现相对于屏幕弹出的窗口或是图片淡入淡出(弹出时)?就是说.在mobile屏幕上(而不是你自己写的窗口或是其它你程序中的背景图片上),一个窗口淡入淡出.或是一个图片淡入淡出.我说的不是在你的窗口基础上再淡入淡出.而是在屏幕上.总结实现有这几种方法:
  1>建立分层窗口.窗口风格为WS_EX_LAYERED............下面实现不用再说了.因为mobile不支持分层窗口.
  2>使用特定API---AnimateWindow函数................也不用再看了,因为mobile不支持AnimateWindow.
  3>建立窗口的时候让窗口透明.然后按照一定的透明度把图片按一定的时间比例COPY到窗口DC中.可以实现窗口淡入.但是不能实现窗口淡出.我思考的原因是:在COPY一定的透明度的图片到窗口DC中时,窗口DC的图片透明度是一个叠加的效果.所以淡出就不会起作用.换句话说,窗口DC中的内容你只能覆盖不能清除.所以从不透明到透明是一个我不能解决的难点:
   解决方案1: 同样地,把要弹出的窗口挡住的那部分屏幕在窗口弹出前先截取保存下来.在图片淡入到不透明的时候,用截取的屏幕图片做淡入.从用户的角度来看:确实是一个淡入淡出的效果.但是其间如果用户做一些影响屏幕更新的动作.这个方案是不可行的.
   解决方案2: 在方案一的基础上,每一段时间截取一次屏幕再做淡入.-----不可行.原因是截取屏幕要用到的屏幕DC通常都包括你的窗口或图片在内.

各位兄弟姐妹有没有见到过在屏幕上淡入淡出的程序,请指点一二,小弟刚入道没多久..想做好一点,

  
  

最新回复

这个效果在我刚开始写CE程序的时候有想过,后来觉得不实用,主要占时间.所以放弃. 淡入比较简单,楼主方法也可行,我就不说了. 谈谈淡出吧: 我个人觉得不要总想着屏幕DC,可以按照窗口Z序进行查找,将当前窗口DC的内容与Z序靠后的窗体内容进行XOR.实现颜色混合,达到半透明等效果. PS:我没试过,抽空我也试试. 关于NBCOOL的思路个人觉得改驱动的话,可移植性就太差了,当然他说的方法,我也没有验证过.   详情 回复 发表于 2008-5-6 14:07
点赞 关注

回复
举报

69

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
想了解更多IT技术,请登陆:http://www.ciitc.com
 
 

回复

98

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
没有见过
实现不了
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

4
 
lz想法很不错。

期待。。。

先找找mobile上有没有实现的可能吧。然后再考虑ce上的。
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(中级)

5
 
mobile有实现这种效果的软件,我现在在用。
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

6
 
好像记得有见过类似效果在windows mobile 一些主题插件上面,但是真正实现类似windows xp上面的窗口级淡入淡出是没有的。其实不用想得太复杂,从原理来看,淡入淡出就是两张图片的透明运算,只是PC处理速度较快,看起来比较逼真而已。另外,应该记得,当windows 2000出来的时候,有时要安装驱动程序才可以实现淡入淡出,这说明这种级别的淡入淡出是用到了驱动特性的,而XP已经把这种集成进系统了。

一般LCD都是支持两层的,比如窗口显示和鼠标指针显示,就是两层。换句话说,如果你的鼠标指针是一张图片,那么用这张图片在lcd buffer中和窗口buffer做透明运算,那么效果就和xp一样了,拖动都不会有问题。如果能修改驱动,这种方式比较现实,如果不能改驱动,还是模拟一下比较好,做不到真正和xp一样的。

也许可以做个实验,看能不能让鼠标指针透明就知道了。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(中级)

7
 
楼主的想法其实偏离实际的,首先要知道优秀的UI界面设计 并不是一定要通过淡入淡出效果来实现的.
个人觉得直观,布局合理,操作简单的界面才是最优UI界面,只有用户使用起来非常顺手,才是问题的关键.
特别在移动设备上,既要考虑速度 也要考虑美观,添加部分图片来达到跟软件完美结合就是好的UI界面.

你可以通过建立两个CDC 或者多个,然后利用BitBlt进行运算,可以实现透明效果,这里涉及的算法肯定是复杂的,不然的话早就有人解决了.
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

8
 
感谢版主nbcool回复,从你的回复中学习到一些东西.谢谢..
   还是有些问题:就是一但在真机上运行,没有了鼠标指标.(触摸屏+窗口层)这个时候窗口仍然能支持两层吗?

谢谢KevinCEC建议,你的话很有道理.学习了...
    BitBlt这个API太高级了,没有办法做到啊,有没有底层一点的API.个人感觉:BitBlt,AlphaBlend,TransparentBlt等等这些API都太上层,没有办法满足位运算要求.我也是想让用户感觉更好一点.苦于CE没有提供更底层的API.
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

9
 
可能是我刚刚入门中.所以很多东西都不知道..我先用我的方法写一个,等毕业设计完了再按KevinCEC建议试着写一个.
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

10
 
Windows Mobile也有鼠标指针的,不过一般都没加,多普达有款加了鼠标指针。WinCE上更不用说了。LCD支持多层显示是由LCD硬件决定的,指针和窗口图像数据是放在不同buffer里面的。
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

11
 
这个效果在我刚开始写CE程序的时候有想过,后来觉得不实用,主要占时间.所以放弃.

淡入比较简单,楼主方法也可行,我就不说了.
谈谈淡出吧:
我个人觉得不要总想着屏幕DC,可以按照窗口Z序进行查找,将当前窗口DC的内容与Z序靠后的窗体内容进行XOR.实现颜色混合,达到半透明等效果.
PS:我没试过,抽空我也试试.

关于NBCOOL的思路个人觉得改驱动的话,可移植性就太差了,当然他说的方法,我也没有验证过.
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表