程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 用VB實現“ICQ”式的啟動歡迎畫面

用VB實現“ICQ”式的啟動歡迎畫面

編輯:VB綜合教程
第一次運行,或通過運行程序的方式來啟動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的文件後運行一切都會正常的。->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved