国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

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

2019-11-18 17:26:41
字體:
來源:轉載
供稿:網友
第一次運行,或通過運行程序的方式來啟動ICQ時,隨著一聲火車的長鳴,我們都能看到一朵背景為透空的大花,這就是ICQ獨特的歡迎畫面!通常,我們都是用一整個帶圖形及文字的窗體來做為歡迎畫面的。我們要如何去做才能實現類ICQ的歡迎畫面呢?這看起來像是件十分復雜的工作,其實,利用了強大的API函數,事情就會變得非常的簡單。出于簡單化的考慮,我使用VB6.0簡體中文企業(yè)版來完成這一例程。
  首先要準備好做為歡迎畫面所需要的圖片,然后對圖片進行簡單的處理,把需要透空的地方填上純白色(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.Width/Screen.TwipsPerPixelX
  sy=Screen.Height/Screen.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(huán)/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環(huán)境下運行有可能會出現透空圖像一閃而過的現象,這并不是你的錯,只要把程序編譯成*.exe的文件后運行一切都會正常的。->


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宿州市| 墨玉县| 绥中县| 江津市| 镇安县| 庆元县| 巴里| 长岛县| 孟州市| 昌吉市| 浑源县| 清苑县| 恭城| 五台县| 台湾省| 大荔县| 舞钢市| 固安县| 天峨县| 东乌珠穆沁旗| 舟山市| 神木县| 通山县| 台湾省| 巴楚县| 保德县| 杭锦后旗| 孟津县| 商城县| 威宁| 合川市| 通州市| 曲周县| 明光市| 沙湾县| 历史| 象山县| 乐平市| 远安县| 察隅县| 蒲江县|