CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

实现半透明效果

楼主irq001()2001-05-15 19:24:00 在 VB / 基础类 提问

有两个图片互相有一部分重叠,要求实现重叠部分是两个图片互相渗透的半透明效果?(win98,vb6),给分。 问题点数:74、回复次数:12Top

1 楼JYQing(极于情)回复于 2001-05-15 20:12:00 得分 30

我见过一些程序的半透明效果是利用BitBlt的vbSrcAnd方法来实现,但图片的混合效果比较差。如果你不在意图片混合的速度,那么下面的代码很适合:  
  Private   Function   COMBINAR(COLOR1   As   Long,   COLOR2   As   Long)   As   Long  
          Dim   R1   As   Integer,   G1   As   Integer,   B1   As   Integer,   R2   As   Integer,   G2   As   Integer,   B2   As   Integer  
          GetRgb   COLOR1,   R1,   G1,   B1  
          GetRgb   COLOR2,   R2,   G2,   B2  
          COMBINAR   =   RGB((R1   +   R2)   /   2,   (G2   +   G1)   /   2,   (B2   +   B1)   /   2)  
  End   Function  
   
  Private   Sub   GetRgb(ByVal   color   As   Long,   ByRef   red   As   Integer,   ByRef   green   As   Integer,   ByRef   blue   As   Integer)  
          Dim   Temp   As   Long  
          Temp   =   (color   And   255)  
          red   =   Temp   And   255  
          Temp   =   Int(color   /   256)  
          green   =   Temp   And   255  
          Temp   =   Int(color   /   65536)  
          blue   =   Temp   And   255  
  End   Sub  
   
  Private   Sub   Command1_Click()  
          Picture3.Cls  
          Picture3.Height   =   Picture1.Height  
          Picture3.Width   =   Picture1.Width  
          Dim   X   As   Long  
          Dim   Y   As   Long  
          For   X   =   0   To   Picture1.ScaleWidth  
                  DoEvents  
                  For   Y   =   0   To   Picture1.ScaleHeight  
                          Picture3.PSet   (X,   Y),   COMBINAR(Picture1.Point(X,   Y),   Picture2.Point(X,   Y))  
                  Next   Y  
          Next   X  
  End   Sub  
   
  由于是一点一点的画,所以速度颇慢!  
  Top

2 楼TechnoFantasy((VB MVP)www.applevb.com)回复于 2001-05-15 21:04:00 得分 30

看看文章:  
  http://www.applevb.com/art/alphablend.txt  
  利用AlphaBlend函数实现图像的淡入淡出,实现的是从透明到不透明。简化后也可以实现半透明效果Top

3 楼Ninputer(装配脑袋)回复于 2001-05-15 21:10:00 得分 0

没错,可惜如果是VB.net就更容易了Top

4 楼JYQing(极于情)回复于 2001-05-15 21:13:00 得分 0

我也想知道,在Win98中到底能否正常使用AlphaBlend函数?Top

5 楼TechnoFantasy((VB MVP)www.applevb.com)回复于 2001-05-15 21:17:00 得分 0

可以Top

6 楼irq001()回复于 2001-05-16 12:03:00 得分 0

我会去试一下,谢谢回复,一有结果一定报答各位。Top

7 楼irq001()回复于 2001-05-16 21:27:00 得分 0

to   JYQing(极于情):  
  我还记得你,为什么给两个颜色,再求平均值就能实现半透明,我觉得也应该考虑颜色等诸多方面,不过你的跟TechnoFantasy(www.applevb.com)用AlphaBlend函数结果相同,只是慢了些。  
  另外,AlphaBlend函数在Win98中能正常使用。  
  to   TechnoFantasy(www.applevb.com):  
  很有用。  
  请等待加分。Top

8 楼JYQing(极于情)回复于 2001-05-16 22:18:00 得分 0

原理是什么,我也说不清,很多时我拿图像问题问别人时,都叫我去看什么计算机图形学。  
  我未啃过这类书,只懂一点点VB编程,抱歉,帮不了你。  
   
  我也得试试AlphaBlend,速度应该很快吧!Top

9 楼ticsa(脱壳虾)回复于 2001-05-16 22:38:00 得分 14

今天买的《电脑爱好者》上的程序谷里有篇用Delphi做半透明窗体的例子  
  用的就是AlphaBlendTop

10 楼irq001()回复于 2001-05-17 18:24:00 得分 0

谢各位了。Top

11 楼winthegame(120斤重的大青蛙)回复于 2001-05-27 03:19:00 得分 0

关注Top

12 楼winthegame(120斤重的大青蛙)回复于 2001-05-27 03:19:00 得分 0

关注Top

相关问题

  • 用BITBLT实现半透明效果…………
  • 请问如何实现窗体的半透明效果?
  • 同时实现半透明效果和异形窗口?
  • WinCE下如何实现窗口半透明效果?
  • 如何实现flashget 0.95的悬浮窗那种半透明的效果?
  • 请问怎么让窗体的标题栏实现半透明效果??
  • 请问:如何实现半透明显示效果(就象金山词霸中的效果)?
  • 在Windows9x好像无论如何都无法使用SetWindowLayerAttribute,怎样实现窗体的半透明效果?
  • 除了使用AlphaBlend外,还有什么方法可以实现半透明效果的画图?
  • 高手过来看一下,如何实现窗口的半透明渐变效果?

关键词

  • win98
  • 函数
  • 效果
  • 半透明
  • alphablend
  • picture
  • combinar
  • 实现
  • applevb
  • getrgb

得分解答快速导航

  • 帖主:irq001
  • JYQing
  • TechnoFantasy
  • ticsa

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo