用VB实现“ICQ”式的启动欢迎画面

倾我所有D

倾我所有D

2016-02-19 21:06

人生本是一个不断学习的过程,在这个过程中,图老师就是你们的好帮手,下面分享的用VB实现“ICQ”式的启动欢迎画面懂设计的网友们快点来了解吧!
第一次运行,或通过运行程序的方式来启动ICQ时,随着一声火车的长鸣,我们都能看到一朵背景为透空的大花,这就是ICQ独特的欢迎画面!通常,我们都是用一整个带图形及文字的窗体来做为欢迎画面的。我们要如何去做才能实现类ICQ的欢迎画面呢?这看起来像是件十分复杂的工作,其实,利用了强大的API函数,事情就会变得非常的简单。出于简单化的考虑,我使用VB6.0简体中文企业版来完成这一例程。
  首先要准备好做为欢迎画面所需要的图片,然后对图片进行简单的处理,把需要透空的地方填上纯白色(255,255,255),然后保存为*.bmp文件,这用PhotoShop可以很容易地实现。需要注意的是,图片必须为“索引色”模式,如果不是就需用PhotoShop来修改,否则不能实现透空效果。  先建立一个标准EXE工程,在窗体上文稿放置一个Picture控件,控件名为Picture1,和一个Timer控件,控件名为Timer1,Interval属性设置为2000。
  原程序如下:
  OptionExplicit
  `定义获取桌面HDC的api函数
  PrivateDeclareFunctionGetDCLib“user32”(ByValhwndAsLong)AsLong
  `定义TransparentBlt函数
  `实现图片的透空效果需要用上API函数:TransparentBlt,这个函数功能十分强大,而且使用方便,但不幸的
  `是VB自带的API浏览器居然把它的漏掉了,所以我们只有采用人工输入的方法了
  PrivateDeclareFunctionTransparentBltLib“msimg32.dll”_
  (ByValhdcDestAsLong,_
  ByValnXOriginDestAsLong,_
  ByValnYOriginDestAsLong,_
  ByValnWidthDestAsLong,_
  ByValnHeightDestAsLong,_
  ByValhdcSrcAsLong,_
  ByValnXOriginSrcAsLong,_
  ByValnYOriginSrcAsLong,_
  ByValnWidthSrcAsLong,_
  ByValnHeightSrcAsLong,_
  ByValcrTransparentAsLong)AsLong
  `其中,hdcDest为目标地的HDC,nXOriginDEst和nYoriginDest分别为目标图像的起始点坐标,nWidthDesk和nHeightDest分别为目标图像的宽度和高度。与之相应的hdcSrc、nXOriginSrc、nyOriginSrc、nWidthSrc、nHeightSrc分别为原图的HDC、原图的起始X、Y坐标、原图和宽度和长度,crTransparent为需要设置成透空的颜色的RGB值。
  `定义用于恢复桌面的函数
  PrivateDeclareFunctionInvalidateRectAsAnyLib“user32”Alias
  “InvalidateRect”_(ByValhwndAsLong,lpRectAsAny,ByValbEraseAsLong)AsLong
  
  PrivateSubForm_Load()
  Me.Hide
  DimPicAsLong
  DimwAsLong
  DimhAsLong
  DimxAsLong
  Dimsx,sy
  Picture1.AutoRedraw=True
  `获取桌面的HDC
  x=GetDC(0)
  `计算桌面的宽度和高度
  sx=Screen.WidthScreen.TwipsPerPixelX
  sy=Screen.HeightScreen.TwipsPerPixelY
  `计算图像的宽度和高度
  w=Picture1.ScaleX(Picture1.Picture.Width,8,vbPixels)
  h=Picture1.ScaleY(Picture1.Picture.Height,8,vbPixels)
  
  picture1.picture=loadpicture(“图像文件的完整文件名称”)
  
  `使透空的图像显示在桌面的中央
  Pic=TransparentBlt(x,_
  sx/2-w/2,_
  sy/2-h/2,_
  w,_
  h,_
  Picture1.hDC,_
  0,_
  0,_
  w,_
  h,_
  RGB(255,255,255))
  EndSub
  PrivateSubTimer1_Timer()
  `两秒钟后恢复桌面
  InvalidateRectAsAny0,ByVal0&,True
  Load自制程序的主窗体名
  Timer1.Enabled=False
  EndSub
  需要注意的是程序完成后如果直接在VB环境下运行有可能会出现透空图像一闪而过的现象,这并不是你的错,只要把程序编译成*.exe的文件后运行一切都会正常的。->

展开更多 50%)
分享

猜你喜欢

用VB实现“ICQ”式的启动欢迎画面

编程语言 网络编程
用VB实现“ICQ”式的启动欢迎画面

用VB实现“木马”式隐形运行程序

编程语言 网络编程
用VB实现“木马”式隐形运行程序

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

用VB实现浮动按钮

编程语言 网络编程
用VB实现浮动按钮

用VB实现程序的隐形

编程语言 网络编程
用VB实现程序的隐形

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

用VB实现文件查找功能

编程语言 网络编程
用VB实现文件查找功能

vb实现雨滴式的显示图片

编程语言 网络编程
vb实现雨滴式的显示图片

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

vc下动态创建access数据库的实现

vc下动态创建access数据库的实现

VC保存文件的参考代码

VC保存文件的参考代码
下拉加载更多内容 ↓