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,要釋放的設備場景句柄