高分讨论:实现QQ和MSN魔法表情这个功能! ( 积分: 100 )

  • 主题发起人 主题发起人 cty901
  • 开始时间 开始时间
C

cty901

Unregistered / Unconfirmed
GUEST, unregistred user!
最近我对窗体透明这方面非常着迷,研究了PNG透明窗体(看了小雨哥和DELCOMP兄的讨论帖子,基本上弄明白了),但还有一个问题就是我看到QQ的魔法表情这个功能,也研究了一下,我用SetLayeredWindowAttributes这个API实现了一部分,但是效果很差,边缘有一圈LWA_COLORKEY的标志颜色,看起来很丑,还有就是比如播放的FLASH有半透明的部分,那就更难看了,完全就看见窗体的LWA_COLORKEY颜色了,而看不到窗体背后的图像,我研究了半天结果还是只能达到这样的效果,效果说明都在下图,希望大家都来讨论~~
图片请看:http://www.01cn.net/noncgi/attach/2005/12/10/11872-flashtransperent-embed.gif
或者这里:http://www.wuyibbs.com/blog/attachments/month_0512/flashtransperent.gif
详细透明效果演示:
http://www.iurl.cn/test.htm [要实现的效果就如这里面那两个窗口一样(边框和标题忽略)]
我在多图形图像区也开了一贴,如有高人实现,那么200分全部奉上!
 
最近我对窗体透明这方面非常着迷,研究了PNG透明窗体(看了小雨哥和DELCOMP兄的讨论帖子,基本上弄明白了),但还有一个问题就是我看到QQ的魔法表情这个功能,也研究了一下,我用SetLayeredWindowAttributes这个API实现了一部分,但是效果很差,边缘有一圈LWA_COLORKEY的标志颜色,看起来很丑,还有就是比如播放的FLASH有半透明的部分,那就更难看了,完全就看见窗体的LWA_COLORKEY颜色了,而看不到窗体背后的图像,我研究了半天结果还是只能达到这样的效果,效果说明都在下图,希望大家都来讨论~~
图片请看:http://www.01cn.net/noncgi/attach/2005/12/10/11872-flashtransperent-embed.gif
或者这里:http://www.wuyibbs.com/blog/attachments/month_0512/flashtransperent.gif
详细透明效果演示:
http://www.iurl.cn/test.htm [要实现的效果就如这里面那两个窗口一样(边框和标题忽略)]
我在多图形图像区也开了一贴,如有高人实现,那么200分全部奉上!
 
帮你提前,学习!
 
这个问题俺也关注。我在01cn上说了一些简单的看法。学习中。
 
看了你做的效果,感觉是你的图片处理得不好,边缘那些颜色根本就不是你的窗体背景色,而是你处理图片的时候填充背景颜色时,背景颜色和前景之前的过渡色,近似于背景而而已。而透明处理的时候只能把一种颜色设为透明,而近似背景色的边缘过渡色还在那里,所以看上去就是你做出来的那种效果。

你可以简单的在窗体上放一个Image控件,调入你的图片,把Image的透明色设成你图片的背景色,这样如果发现边缘还有近似背景色的边说明你的图片处理得不合格
 
学习! 顶!
 
非常感谢大家参加讨论,特别感谢plenilune168兄的耐心讲解,不过有一点我可能没表达清楚,这里我补充说明一下,plenilune168兄可能误认为我的演示是用的图片了~~我的
//////////////////////////不支持UBB我这样着重标出来////////////////////////////
演示是用的QQ的宠物眩里面的FLASH动画文件和另外一个透明FLASH动画,两个抓图都是FLASH,不是用的图片,产生的效果是跟随FLASH里面的动画内容的动态窗体
////////////////////////////不支持UBB我这样着重标出来//////////////////////////
,所以不存在图片没处理好一说咯[:)]~然后我的窗体COLORKEY色是紫色也就是FF00FF,但它只计算到动画的边界然后,就没办法过渡透明了,但是我发现MSN的魔法表情和QQ的魔法表情都可以过渡透明。。。就是这个问题!另外我把演示用的两个FLASH文件也传到了空间上,各位可以打开看效果:
http://www.iurl.cn/flash1.swf
http://www.iurl.cn/flash2.swf
详细透明效果演示:
http://www.iurl.cn/test.htm [要实现的效果就如这里面那两个窗口一样(边框和标题忽略)]
 
。。。奇怪,大富翁。。。怎么不能支持UBB代码呢??
 
如果你想一边在家上网,还想有钱赚的话。就赶紧注册了新闻时报,只要一边上网聊天、玩游戏,一边看广告,就一切OK了。不需要“一分钱”的投入,别以为不可能,有人会说怎么会天上掉馅饼呢。其实也不是想得这么简单,其实当中都有很多一线门户网站和电子商务网站大力赞助,所以我们只是提升广告的知名度一样,让我们去流览广告,等于是给广告打广告。我弟知道三个信誉度很高的网络赚钱机构。(大概的方法,注册网站里面有详细的介绍),机遇再面前,就看大家怎么把握了!
不费事,就把在家上网的宽带费搞定,还能赚一笔外快。靠!你们现在还不赶快行动起来!
三家网赚,让你一起使用,收益你自己心里应该有数了吧!

一、 新闻时报——信誉度100%
注册地址:http://www.ads4cn.com/newsbar/refferer.asp?jay1717
二、 第二家 八趣通宝——信誉度100%。
只要能上网,像挂QQ一样挂着就能轻松挣Q币或人民币
注册地址:http://www.8qu.net/register.asp?net=jay1717
三、 第三家SOHO广告网----信誉度100%。
注册地址:http://www.sohoads.com/sabar/reg.asp?sj=jay1717
 
怎么没人顶啊???是问题太简单还是太复杂???没人能解决吗??????
 
顶上去!!!!!!!!!!
 
再顶一下,以前的QQ魔法是Flash格式,效果挺好,而现在的QQ宠物也是Flash格式,效果不如以前的好,是不是魔法是在别的程序中调用的,或者是在窗体中调用的。因为魔法是固定位置的。因为研究这个,特意问别人要了个宠物。呵呵。
 
[:D]谢谢iixin兄帮顶,对,以前QQ魔法用的是抓背景图来实现的假透明,不过现在它的魔法和宠物都是用的真正的透明了~~我就是想实现它的魔法表情那样效果的窗口~~~
 
呵呵,不客气。
QQ肯定是用了GdiPlus.dll,国产的桌面秀XDeskShow.exe也是用的GdiPlus.dll,看来只能用GdiPlus.dll来作了?
 
我想问一下,你在Delphi里Flash是怎么播放的?或许可以从这里入手?
 
~~我在DELPHI里面直接用的Shockwave这个FLASH的播放器ActiveX控件播放的,然后把窗口模式改为透明,再用SetLayeredWindowAttributes把窗口透明的~
 
哎~~~看来这200分是没有人要,也没有人要的起咯~~~~~悲哀~~
 
delphi 播放 flash 的代码, 谁有?
 
先顶起来再说吧
 
我也只能做到和你一样的效果,不过我不认为应该用SetLayeredWindowAttributes,跟踪过,发现在oleDraw的时候就会画背景,所以没有办法半透明下面的,只是和背景半透明,所以我以为关键是让flash在Draw的时候不重绘背景,但是我没有找到解决办法
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部