古詩詞大全網 - 成語經典 - VB 抓圖API程序解釋

VB 抓圖API程序解釋

才疏學淺,只能粗略講壹下啦

SourceDC = CreateDC("DISPLAY", 0, 0, 0)

'以屏幕為源建立壹個設備場景

DestDC = CreateCompatibleDC(SourceDC)

'在內存中建立壹個與剛才建立的設備場景壹致的設備場景

Bhandle = CreateCompatibleBitmap(SourceDC, 400, 300) '顯示區域設置

'在內存中建立壹幅與剛建立的設備場景相兼容的位圖

SelectObject DestDC, Bhandle

'這句難理解壹點,不亂說了,回頭給妳看API說明

BitBlt DestDC, 100, 100, 400, 300, SourceDC, 0, 0, &HCC0020 '設置抓圖區域

'在兩個設備場景(DestDC和SourceDC)間復制位圖

Wnd = Screen.ActiveForm.hwnd

OpenClipboard Wnd

EmptyClipboard

SetClipboardData 2, Bhandle

CloseClipboard

'這壹段是對剪貼板的操作,我的API工具中沒有相關說明

'大體意思應該是把剛才在內存中建立的位圖放到剪貼板中

DeleteDC DestDC

'刪除壹個設備場景

ReleaseDC Dhandle, SourceDC

'在內存中釋放掉壹個設備場景

Picture1.Picture = Clipboard.GetData()

'這句不用解釋了吧,把剪貼板中的位圖下載到Picture1中

========================

下面是我在API工具中查到的相關說明,但願對妳有幫助

CreateDC

說明

為專門設備創建設備場景

返回值

Long,新設備場景句柄,若出錯則為零

其它

在繪制之前,先要為該設備場景選定壹個位圖。不再需要時,該設備場景可用DeleteDC函數刪除。刪除前,其所有對象應回復初始狀態。若有設備初始設置可用DocumentProperties

API函數載入DEVMODE結構。使用屏幕設備場景(DISPLAY)時要小心,因為它會幹擾其他應用程序的外觀

示例:靠近屏幕左上角畫壹個矩形

dc& = CreateDCBynum("DISPLAY", vbNullString,

vbNullString, 0)

dl& = Rectangle(dc& , 5, 5, 100, 100)

參數表

lpDriverName --- String,用vbNullString傳遞null值給該參數,除非:1、用DISPLAY,是獲取整個屏幕的設備場景;2、用WINSPOOL,則是訪問打印驅動

lpDeviceName --- String,所用專門設備的名稱。該名由打印管理器分配顯示

lpOutput ------- String,用vbNullString傳遞null值給該參數

lpInitData ----- DEVMODE,這個結構保存初始值。用CreateDCBynum傳遞0(NULL)值則適用默認設置

CreateCompatibleDC

說明

創建壹個與特定設備場景壹致的內存設備場景

返回值

Long,新設備場景句柄,若出錯則為零

其它

在繪制之前,先要為該設備場景選定壹個位圖。不再需要時,該設備場景可用DeleteDC函數刪除。刪除前,其所有對象應回復初始狀態

參數表

hdc ------------ Long,設備場景句柄。新的設備場景將與它壹致。也可能為0以創建壹個與屏幕壹致的設備場景

CreateCompatibleBitmap

說明

創建壹幅與設備有關位圖,它與指定的設備場景兼容

返回值

Long,執行成功返回位圖句柄,零表示失敗

其它

內存設備場景即與彩色位圖兼容,也與單色位圖兼容。這個函數的作用是創建壹幅與當前選入hdc中的場景兼容。對壹個內存場景來說,默認的位圖是單色的。倘若內存設備場景有壹個DIBSection選入其中,這個函數就會返回DIBSection的壹個句柄。如hdc是壹幅設備位圖,那麽結果生成的位圖就肯定兼容於設備(也就是說,彩色設備生成的肯定是彩色位圖)

如果nWidth和nHeight為零,返回的位圖就是壹個1×1的單色位圖

壹旦位圖不再需要,壹定用DeleteObject函數釋放它占用的內存及資源

參數表

hdc ------------ Long,設備場景的句柄

nWidth --------- Long,位圖寬度,以像素為單位

nHeight -------- Long,位圖高度,以像素為單位

SelectObject

說明

每個設備場景都可能有選入其中的圖形對象。其中包括位圖、刷子、字體、畫筆以及區域等等。壹次選入設備場景的只能有壹個對象。選定的對象會在設備場景的繪圖操作中使用。例如,當前選定的畫筆決定了在設備場景中描繪的線段顏色及樣式

返回值

Long,與以前選入設備場景的相同hObject類型的壹個對象的句柄,零表示出錯。如選定的對象是壹個區域(Region),結果就是下列常數之壹:SIMPLEREGION,

COMPLEXREGION 或 NULLREGION 對區域進行描述, GDI_ERROR 表示出錯

其它

返回值通常用於獲得選入DC的對象的原始值。繪圖操作完成後,原始的對象通常選回設備場景。在清除壹個設備場景前,務必註意恢復原始的對象

參數表

hdc ------------ Long,壹個設備場景的句柄

hObject -------- Long,壹個畫筆、位圖、刷子、字體或區域的句柄

BitBlt

說明

將壹幅位圖從壹個設備場景復制到另壹個。源和目標DC相互間必須兼容

返回值

Long,非零表示成功,零表示失敗。會設置GetLastError

其它

在NT環境下,如在壹次世界傳輸中要求在源設備場景中進行剪切或旋轉處理,這個函數的執行會失敗

如目標和源DC的映射關系要求矩形中像素的大小必須在傳輸過程中改變,那麽這個函數會根據需要自動伸縮、旋轉、折疊、或切斷,以便完成最終的傳輸過程

參數表

hDestDC -------- Long,目標設備場景

x,y ------------ Long,對目標DC中目標矩形左上角位置進行描述的那個點。用目標DC的邏輯坐標表示

nWidth,nHeight - Long,欲傳輸圖象的寬度和高度

hSrcDC --------- Long,源設備場景。如光柵運算未指定源,則應設為0

xSrc,ySrc ------ Long,對源DC中源矩形左上角位置進行描述的那個點。用源DC的邏輯坐標表示

dwRop ---------- Long,傳輸過程要執行的光柵運算

(插壹句:&HCC0020應該是壹個光柵運算的常數vbSrcCopy)

DeleteDC

說明

刪除專用設備場景或信息場景,釋放所有相關窗口資源。不要將它用於GetDC函數取回的設備場景

返回值

Long,執行成功則為非零,失敗則為零

其它

若有對象被選入設備場景,則在調用本函數前應將它們選出。為此,可將初始對象回選入DC,也可用SaveDC, RestoreDC函數對回復DC為其創建時的狀態

在vb裏使用

不要將它用於由vb hdc屬性獲取的設備場景句柄

參數表

hdc ------------ Long,將要刪除的設備場景

ReleaseDC

說明

釋放由調用GetDC或GetWindowDC函數獲取的指定設備場景。它對類或私有設備場景無效(但這樣的調用不會造成損害)

返回值

Long,執行成功為1,否則為0

其它

對那些用CreateDC壹類的DC創建函數生成的設備場景,不要用本函數

參數表

hwnd ----------- Long,要釋放的設備場景相關的窗口句柄

hdc ------------ Long,要釋放的設備場景句柄