• <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實現特殊圖形效果

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

    領測軟件測試網 引言

    在PowerPoint這樣的軟件中,各種各樣的圖形特效層出不窮,如百葉窗式、飛入式、關門式、棋盤式等等,在VB中也是可以實現這樣的效果的,而且十分簡單,其方法是調用Windows的API函數BitBlt。

    BitBlt函數簡介

    BitBlt函數在API函數群中是個很重要的角色,尤其在圖像處理方面,更是不可或缺。其原意是“Bit Block Transfer”,用途是位圖的復制。用Bitblt函數顯示圖形特效,其原理十分簡單,在窗體上繪制兩個圖片框,將圖片存入一個圖片框,同時令另一個為空,然后調用Bitblt函數將第一個圖片框中的圖形一部分一部分地復制到第二個圖片框中,這樣就可以實現千奇百怪的圖形特效了。

    使用BitBlt函數應先在模塊中進行如下聲明:

    Declare Function BitBlt Lib “gdi32” (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long,ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long

    各參數含義如下:

    參數 含義

    hDestDC 目標設備環境的handle(hDC)

    X,Y 欲復制圖形放置在目標設備

    環境的位置(左上角坐標)

    nWidth 欲復制圖形的寬度

    nHeight 欲復制圖形的高度

    hSrcDc 源設備環境的hDC

    xSrc,ySrc 從源圖形的(xSrc,ySrc)坐

    標處開始復制

    dwRop 圖形從源設備環境復制到目標

    設備環境時所做的邏輯運算。

    總共有15種運算碼,通常使用

    SRCCOPY(&HCC0020),表

    示直接復制。

    實現完美的圖片顯示效果

    新建一窗體Form1和一模塊Module1,在窗體上添加兩個圖片框Picture1、Picture2和一個按鈕Command1,Picture1中加載任一圖片,Picture2為空,為按鈕編程以達到點擊按鈕,此圖片在Picture2中以下述任一效果出現。

    1.左進入效果

    其原理是將源圖形的像素元素,一列一列地復制到目標區域,配合稍許的時間延遲及數據復制的方向,從屏幕上看好像圖形從左邊進入圖片框中。改變delay()函數中的參數可改變程序運行時間。據此可制作“從下進入”、“從上進入”、“從右進入”等效果。

    2.水平百葉窗效果

    其原理是事先將圖形分割成幾部分,每一部分都單獨傳輸給目標圖像,傳輸的方式采用“值差”式,

    即先傳輸第一部分第一塊,第二部分第一塊……再傳輸第一部分第二塊,第二部分第二塊……直到圖形出來為止,從屏幕上看好像是門簾逐漸反轉顯示一樣。據此可做出“垂直百葉窗”等效果。

    3.負片效果

    其原理是把圖形逐點復制,只是把復制的方式改為“NOTSRCCOPY”,從屏幕上看好像是圖片的負片一樣。

    4.拉伸效果

    其原理是開始把圖形的寬度方向壓縮成很窄的矩形,高度方向與原圖像保持一致,然后逐步放大以接近原圖片的寬度,從屏幕上看好像把圖片拉伸了一樣。

    以下是部分源程序清單:

    Private Sub Command1_Click()

    Const SRCCOPY = &HCC0020

    Const NOTSRCCOPY = &H330008

    Dim i, j, w, h As Integer

    Dim dtime, effect, scanline As Integer

    Dim source, dest

    dtime = 20000

    w = Picture1.ScaleWidth

    h = Picture1.ScaleHeight

    source = Picture1.hDC

    dest = Picture2.hDC

    effect = Int(5 * Rnd)

    Picture2.Cls

    Select Case effect

    Case 0: ’從左進入效果

    For i = 0 To w

    call BitBlt(dest, 0, 0, i, h, source, 0, 0, srccopy)

    delay dtime * 3

    Next

    Case 1: ’左上角飛入效果

    For i = 0 To w

    Call BitBlt(dest, 0, 0, i, h * (i / w), source, 0, 0, srccopy)

    delay dtime * 3

    Next

    Case 2: ’水平百葉窗效果

    scanline = 10

    For i = 0 To (scanline - 1)

    For j = i To w Step scanline

    Call BitBlt(dest, j, 0, 1, h, source, j, 0, srccopy)

    delay dtime * 2

    Next

    delay 10 * dtime

    Next

    Case 3: ’負片效果

    Call BitBlt(dest, 0, 0, w, h, source, 0, 0, notsrccopy)

    Case 4: ’拉伸效果

    For i = 0 To 100

    For j = w To 0 Step -1

    Call BitBlt(dest, j * i / 100, 0, 1, h, source, j, 0, srccopy)

    Next

    Next

    End Select

    End Sub

    Public Sub delay(dtime As Long)

    Dim i As Long

    For i = 0 To dtime

    Next i

    End Sub

    圖片出現的效果還有很多,由于篇幅所限,就不在這里敘述了。只要您靈活地應用以上方法,一定還能產生更多更美的圖片效果。這些風格各異的圖片效果必定會為您的VB程序增添美麗的情調,使您的程序更富魅力、更專業。

    (以上程序在VB 6.0下調試通過)

    延伸閱讀

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


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