設為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

返回列表 發(fā)新帖
查看: 2818|回復: 2
打印 上一主題 下一主題

API實現(xiàn)完美的圖片出現(xiàn)效果-->zhuyiwen轉移

[復制鏈接]
跳轉到指定樓層
1#
發(fā)表于 2002-9-27 22:37:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
在用Visual Basic編程的時候,通常要調用圖片,如果圖片出現(xiàn)的時候是以各種完美的效果出現(xiàn)的,(如馬賽克效果,百葉窗效果等)則你的程序就會顯得更加靈活,你的程序就會更加專業(yè)化。本文講述了Visual Basic中如何調用API函數(shù),以及用API函數(shù)中的BitBlt函數(shù)實現(xiàn)各種完美的圖片出現(xiàn)效果的過程。

§1 一般的圖片出現(xiàn)效果

  一般情況下,要使Visual Basic中的圖片出現(xiàn),例如,要顯示Picture1中的圖片,只需一句代碼:

Picture1.Visible=True

  使用以上方法時,圖片是突然出現(xiàn)的。也可以編復雜一點的代碼,使圖片從左到右、從上到下或從中間向四周擴大。例如,使Picture1中的圖片從左到右出現(xiàn),其代碼為:

Picture1.Width = 0

Picture1.Visible = True

For i = 0 To 5000 Step 50 注釋:5000代表圖片的高度

Picture1.Width = i

Next i

使Picture1中的圖片從上到下出現(xiàn)的代碼為:

Picture1.Height = 0

Picture1.Visible = True

For i = 0 To 4000 Step 40 注釋:4000代表圖片的寬度

Picture1.Height = i

Next i

使Picture1中的圖片從中間向四周擴大的代碼為:

Picture1.Width = 0

Picture1.Height = 0

Picture1.Visible = True

For i = 0 To 100

Picture1.Width = Picture1.Width + 50

Picture1.Height = Picture1.Height + 40

Picture1.Left = Picture1.Left - 100

Picture1.Top = Picture1.Top - 80

Next i

  當然,你可以靈活地應用以上辦法實現(xiàn)其他更加好看的圖片出現(xiàn)效果。然而,同Authorware等其他軟件編制的程序相比,你的圖片出現(xiàn)效果仍然會黯然失色,因為Authorware編程時,可以很容易地實現(xiàn)從上到下、從左到右、百葉窗、開門、關門等完美的圖片出現(xiàn)效果,要在Visual Basic中做到這些效果并非易事。

但“天無絕人之路”,強大的Windows API函數(shù)中的BitBlt函數(shù)將幫助您實現(xiàn)這一愿望。

§2 BitBlt函數(shù)

一、 BitBlt函數(shù)的功能

BitBlt API函數(shù)的功能是將屏幕上任何一塊拷貝到屏幕上其它任何一個地方。

二、 聲明BitBlt函數(shù)

1. 運行Visual Basic4.0程序組中的API Text Viewer程序項。
2. 在API Text Viewer中,單擊File菜單下的Load Text File...命令。

3. 在出現(xiàn)的Select a Text API File對話框中,選擇Win32api.txt文件。

4. 為了使以后拷貝Windows API函數(shù)更快,你可以將Win32api.txt文件轉換成為一個數(shù)據(jù)庫。如圖,單擊“是(Y)”。

5. 在API Type下拉框中選擇Declare。

6. 在Available Items中選擇BitBlt,如圖,單擊Add按紐,于是BitBlt便出現(xiàn)在Selected Items框中,單擊Copy按紐。BitBlt函數(shù)變拷貝到剪貼板上。

7. 關閉API Text Viewer,打開Visual Basic程序,使用Insert菜單下的Module命令新建一個Module1,使用Edit菜單下的Paste命令,將剪貼板上的BitBlt函數(shù)拷貝到Module1中。這樣,在您的程序中,就可以使用BitBlt函數(shù)了。

三、BitBlt函數(shù)中各參數(shù)簡介

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

  以上是BitBlt函數(shù)的聲明格式,其中,各參數(shù)定義如下:

參數(shù)

描述

hDestDC

接收位圖的設備描述表

X

目標矩形左上角的邏輯X坐標

Y

目標矩形左上角的邏輯Y坐標

nWidth

目標矩形的寬度

nHeight

目標矩形的高度

hSrcDC

源設備描述表

xSrc

源位圖左上角的邏輯X坐標

ySrc

源位圖左上角的邏輯Y坐標

dwRop

拷貝模式

dwRop的各種可能值為:

&HCC0020

dest=source

&HEE0086

dest=source OR dest

&H8800C6

dest=source AND dest

&H660046

dest=source XOR dest

&H440328

dest=source AND (NOT dest)

&H330008

dest=not source

&H1100A6

dest=(NOT source)AND(NOT dest)

&HC000CA

dest=source AND pattern

&HBB0226

dest=(NOT source) OR dest

&HF00021

dest=pattern

&HFB0A09

dest=Dpsnoo

&H5A0049

dest=pattern XOR dest

&H550009

dest=NOT dest

&H42&

dest=BLACK

&HFF0062

dest=WHITE

在本程序中使用的BitBlt函數(shù)均定義dwRop=HCC0020,如果你定義dwRop為其他值,會收到其他異想不到的效果。

§3 用BitBlt函數(shù)實現(xiàn)各種各樣的圖片出現(xiàn)效果

實現(xiàn)髦滯計?魷中Ч?幕?駒?硎牽荷柚昧礁鐾計?騊icture1和Picture2,在Picture1中裝入要顯示的圖片,(可以在窗體設計時就裝好,也可以在程序運行過程中裝入。)將Picture1中的圖片以各種方法拷貝到Picture2中,從而實現(xiàn)各種各樣的圖片出現(xiàn)效果。

先在Picture1中裝入待顯示的圖片,并設置Picture1的屬性為AutoRedraw=True,Visible=False, 設置Picture2的屬性為AutoRedraw=False,Visible=True,設置Form的屬性為ScaleMode=3。

一、從上到下效
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖 訂閱訂閱
2#
發(fā)表于 2009-4-28 00:31:21 | 只看該作者
老朱:很長沒看完,只想知道能不能在access中使用?
3#
發(fā)表于 2016-3-5 19:08:09 | 只看該作者
111111111111111111111
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

QQ|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2024-10-23 08:36 , Processed in 0.128204 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表