抓图

zqymike 2003-10-04 04:32:09
怎样抓取指定范围的图像?如屏幕上(100,20)到(200,200)的矩形这么大的图像
...全文
69 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodname008 2003-10-04
  • 打赏
  • 举报
回复
' 自己写了个函数,其实是个完整的例子了
' 把屏幕上(100,20)到(200,200)的矩形复制到剪贴板,然后放到PictureBox中
' 在窗体上添加一个CommandButton和一个PictureBox就行了,然后把代码拷过去即可。

Option Explicit
Private Declare Function CreateDC Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, lpInitData 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 CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) 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 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
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Declare Function SetClipboardData Lib "user32" (ByVal wFormat As Long, ByVal hMem As Long) As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long

Private Sub Command1_Click()
ScreenCapture 100, 20, 200, 200
Picture1.AutoSize = True
Picture1.Picture = Clipboard.GetData()
End Sub

' 将屏幕中指定区域的图像复制到剪贴板
' 例: ScreenCapture 0, 0, Screen.Width / 15, Screen.Height / 15
' object.Picture = Clipboard.GetData()
Function ScreenCapture(ByVal Left As Integer, ByVal Top As Integer, ByVal Right As Integer, ByVal Bottom As Integer) As Boolean
Dim rWidth As Integer, rHeight As Integer
Dim SourceDC As Long, DestDC As Long, bHandle As Long, dHandle As Long, wnd As Long
rWidth = Right - Left
rHeight = Bottom - Top
SourceDC = CreateDC("DISPLAY", 0, 0, 0)
DestDC = CreateCompatibleDC(SourceDC)
bHandle = CreateCompatibleBitmap(SourceDC, rWidth, rHeight)
SelectObject DestDC, bHandle
BitBlt DestDC, 0, 0, rWidth, rHeight, SourceDC, Left, Top, &HCC0020
wnd = Screen.ActiveForm.hwnd
OpenClipboard wnd
EmptyClipboard
ScreenCapture = SetClipboardData(2, bHandle)
CloseClipboard
DeleteDC DestDC
ReleaseDC dHandle, SourceDC
End Function

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧