• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

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

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 46次 | 進入軟件測試論壇討論

    領測軟件測試網     第一次運行,或通過運行程序的方式來啟動ICQ時,隨著一聲火車的長鳴,我們都能看到一朵背景為透空的大花,這就是ICQ獨特的歡迎畫面!通常,我們都是用一整個帶圖形及文字的窗體來做為歡迎畫面的。我們要如何去做才能實現類ICQ的歡迎畫面呢?這看起來像是件十分復雜的工作,其實,利用了強大的API函數,事情就會變得非常的簡單。出于簡單化的考慮,我使用VB6.0簡體中文企業版來完成這一例程。
      首先要準備好做為歡迎畫面所需要的圖片,然后對圖片進行簡單的處理,把需要透空的地方填上純白色(255,255,255),然后保存為*.bmp文件,這用PhotoShop可以很容易地實現。需要注意的是,圖片必須為“索引色”模式,如果不是就需用PhotoShop來修改,否則不能實現透空效果! ∠冉⒁粋標準EXE工程,在窗體上文稿放置一個Picture控件,控件名為Picture1,和一個Timer控件,控件名為Timer1,Interval屬性設置為2000。
      原程序如下:
      Option Explicit
      `定義獲取桌面HDC的api函數
      Private Declare Function GetDC Lib “user32” (ByVal hwnd As Long) As Long
      `定義TransparentBlt函數
      `實現圖片的透空效果需要用上API函數:TransparentBlt,這個函數功能十分強大,而且使用方便,但不幸的
      `是VB自帶的API瀏覽器居然把它的漏掉了,所以我們只有采用人工輸入的方法了
      Private Declare Function TransparentBlt Lib “msimg32.dll”_
       (ByVal hdcDest As Long, _
       ByVal nXOriginDest As Long, _
       ByVal nYOriginDest As Long, _
       ByVal nWidthDest As Long, _
       ByVal nHeightDest As Long, _
       ByVal hdcSrc As Long, _
       ByVal nXOriginSrc As Long, _
       ByVal nYOriginSrc As Long, _
       ByVal nWidthSrc As Long, _
       ByVal nHeightSrc As Long, _
       ByVal crTransparent As Long) As Long
      `其中,hdcDest為目標地的HDC,nXOriginDEst和nYoriginDest分別為目標圖像的起始點坐標,nWidthDesk和nHeightDest分別為目標圖像的寬度和高度。與之相應的hdcSrc、nXOriginSrc、nyOriginSrc、nWidthSrc、nHeightSrc分別為原圖的HDC、原圖的起始X、Y坐標、原圖和寬度和長度,crTransparent為需要設置成透空的顏色的RGB值。
      `定義用于恢復桌面的函數
      Private Declare Function InvalidateRectAsAny Lib “user32” Alias  
    “InvalidateRect”_ (ByVal hwnd As Long, lpRect As Any, ByVal bErase As Long) As Long
      
      Private Sub Form_Load()
       Me.Hide
       Dim Pic As Long
       Dim w As Long
       Dim h As Long
       Dim x As Long
       Dim sx, 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 / 2, _
       w, _
       h, _
       Picture1.hDC, _
       0, _
       0, _
       w, _
       h, _
       RGB(255, 255, 255))
      End Sub
      Private Sub Timer1_Timer()
      `兩秒鐘后恢復桌面
      InvalidateRectAsAny 0, ByVal 0&, True
      Load 自制程序的主窗體名
      Timer1.Enabled = False
      End Sub
      需要注意的是程序完成后如果直接在VB環境下運行有可能會出現透空圖像一閃而過的現象,這并不是你的錯,只要把程序編譯成*.exe的文件后運行一切都會正常的。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>