2024年5月11日发(作者:)
精品文档
利用VB捕捉并保存屏幕图像
大家知道在VB下利用API函数Bitblt可以将屏幕或者窗口上的图象拷贝到VB
中的PictureBox对象中,但是如果简单的利用PictureBox的SavePicture函数
来保存图象,会发现什么也保存不了。这篇文章就是介绍如何捕获并利用
Windows下的OLE API函数保存图象。
首先来看源程序,首先建立一个新的工程文件,然后在Form1中加入5个
CommandButton对象和一个PictureBox对象,然后在Form1中加入以下代码:
Option Explicit
Option Base 0
Private Type PALETTEENTRY
peRed As Byte
peGreen As Byte
peBlue As Byte
peFlags As Byte
End Type
Private Type LOGPALETTE
palVersion As Integer
palNumEntries As Integer
palPalEntry(255) As PALETTEENTRY
End Type
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(7) As Byte
End Type
Private Const RASTERCAPS As Long = 38
Private Const RC_PALETTE As Long = &H100
Private Const SIZEPALETTE As Long = 104
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
精品文档
精品文档
Private Declare Function CreateCompatibleDC Lib "GDI32" (ByVal hDC As
Long) As Long
Private Declare Function CreateCompatibleBitmap Lib "GDI32" (ByVal hDC
As Long, _
ByVal nWidth As Long, ByVal nHeight As Long) As Long
Private Declare Function GetDeviceCaps Lib "GDI32" (ByVal hDC As Long,
ByVal _
iCapabilitiy As Long) As Long
Private Declare Function GetSystemPaletteEntries Lib "GDI32" (ByVal hDC
As Long, _
ByVal wStartIndex As Long, ByVal wNumEntries As Long,
lpPaletteEntries _
As PALETTEENTRY) As Long
Private Declare Function CreatePalette Lib "GDI32" (lpLogPalette As
LOGPALETTE) _
As Long
Private Declare Function SelectObject Lib "GDI32" (ByVal hDC As Long,
ByVal hObject _
As Long) As Long
Private Declare Function BitBlt Lib "GDI32" (ByVal hDCDest As Long, ByVal
XDest As _
Long, ByVal YDest As Long, ByVal nWidth As Long, ByVal nHeight
As Long, _
ByVal hDCSrc As Long, ByVal XSrc As Long, ByVal YSrc As Long, ByVal
dwRop _
As Long) As Long
Private Declare Function DeleteDC Lib "GDI32" (ByVal hDC As Long) As Long
Private Declare Function GetForegroundWindow Lib "USER32" () As Long
Private Declare Function SelectPalette Lib "GDI32" (ByVal hDC As Long,
ByVal hPalette _
As Long, ByVal bForceBackground As Long) As Long
Private Declare Function RealizePalette Lib "GDI32" (ByVal hDC As Long)
As Long
Private Declare Function GetWindowDC Lib "USER32" (ByVal hWnd As Long)
As Long
Private Declare Function GetDC Lib "USER32" (ByVal hWnd As Long) As Long
Private Declare Function GetWindowRect Lib "USER32" (ByVal hWnd As Long,
lpRect As _
RECT) As Long
Private Declare Function ReleaseDC Lib "USER32" (ByVal hWnd As Long, ByVal
hDC As _
精品文档
发布评论