pic2为目标,pichx为源目标(待拷贝的图像+标签):
Dim iWd As Long, iHt As Long
iWd = PicHX.Width
iHt = PicHX.Height
Pic2.Cls
BitBlt Pic2.hDc, 0, 0, iWd, iHt, PicHX.hDc, 0, 0, vbSrcCopy
SavePicture Pic2.Image, App.Path & "\test.bmp"
这时打开test.bmp,发现保存的图像为Pic2中空图的样子
Dim iWd As Long, iHt As Long
iWd = PicHX.Width
iHt = PicHX.Height
Pic2.Cls
BitBlt Pic2.hDc, 0, 0, iWd, iHt, PicHX.hDc, 0, 0, vbSrcCopy
SavePicture Pic2.Image, App.Path & "\test.bmp"
这时打开test.bmp,发现保存的图像为Pic2中空图的样子
解决方案 »
- 集合collection内部item个数?
- vb基础,数据类型
- 怎么用datagrid把远程sql数据库分页显示出来我在线!!
- 菜鸟问题100分送大虾:用vb6.0向sql 2000里面写入时间的问题。
- vb中怎么执行命令行语句
- VB6调用VC6生成的DLL文件中的函数,大神帮忙解决问题
- VB读取XML时怎么忽略大小写
- 为什么我的msdn帮助不能运行???
- 小木鱼的问题:vb datareport中细节section1中如何给记录加序号?(0 1 2 ...)
- 是我有病?还是我的计算机有病?--关于ADO
- 点击TreeView1时让DataGrid1显示TreeView1对应的SQL语查询出的值.
- 关于程序运行中状态的表示的问题
http://community.csdn.net/Expert/topic/5765/5765132.xml?temp=.6149256
iWd = PicHX.Width
iHt = PicHX.Height
Pic2.Cls
GetScreenBitmap Form1.hwnd, PicHX.hwnd, 0, 0, iWd, iHt ', 0, 0, vbSrcCopy
Pic2.Picture = Clipboard.GetData
SavePicture Pic2.Image, App.Path & "\test.bmp"
'抓取指定位置的屏幕图像
Option Explicit
Private Declare Function DeleteDC 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 ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc 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 CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Private Declare Function CloseClipboard Lib "user32" () As LongPrivate 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 Const SRCCOPY = &HCC0020 ' (DWORD) dest = source' 抓取屏幕图像到剪贴板
Public Function GetScreenBitmap(FormHwnd As Long, SourceDC As Long, Left As Long, Top As Long, Right As Long, Bottom As Long)
Dim rWidth As Long
Dim rHeight As Long
'Dim SourceDC As Long
Dim DestDC As Long
Dim BHandle As Long
Dim Wnd As Long
Dim DHandle As Long
On Error GoTo ChenJL1031
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 = FormHwnd 'Screen.ActiveForm.hwnd
OpenClipboard Wnd
EmptyClipboard
SetClipboardData 2, BHandle
CloseClipboard
DeleteDC DestDC
ReleaseDC DHandle, SourceDC
Exit Function
ChenJL1031:
MsgBox ("抓图不成功!")
End Function
Public Function GetScreenBitmap(Left As Long, Top As Long, Right As Long, Bottom As Long)
Dim rWidth As Long
Dim rHeight As Long
Dim SourceDC As Long
Dim DestDC As Long
Dim BHandle As Long
Dim Wnd As Long
Dim DHandle As Long
On Error GoTo ChenJL1031
rWidth = Right - Left
rHeight = Bottom - Top
SourceDC = CreateDC("DISPLAY", 0, 0, 0) 'DISPLAY是整个桌面
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
SetClipboardData 2, BHandle
CloseClipboard
DeleteDC DestDC
ReleaseDC DHandle, SourceDC
Exit Function
ChenJL1031:
MsgBox ("抓图不成功!")
End FunctionLeft,Top是抓取区域左上角座标;Right,Bottom是抓取区域右下角座标。都桌面绝对座标。
GetScreenBitmap X1, Y1, X2, Y2
Pic2.Picture = Clipboard.GetData
pic2.refresh