vb 如何用BitBlt复制后台程序图像?

来源:百度知道 编辑:UC知道 时间:2024/05/22 13:55:33
不知道为啥我用getdc获取别的程序中的图片框的设备句柄之后,我用BitBlt来复制这个图片框,如果这个程序在前台就能够正确的复制图像到我的程序中,可是如果这个程序是在后台的话(就是图片框看不见)BitBlt就不能复制了。

到底为什么呢?

怎么才能够复制其他程序中图片框的图片到我的程序呢?
俄,我要复制的是其他程序中的图片,而不是自己程序中的。

呵呵,你可能误解我的意思了。

这位朋友 ,你能否给我一个例子?我用的api浏览器中的例子没有成功。效果和bitblt一样,把程序隐藏了就没法复制图片了

vb自带了快速图片复制更能以取代api函数的bitblt
你可以用paintpicture方法实现,效果更优于bitblt函数
方法:
对象.paintpicture 图片源(为stdpicture变量,也可以是对象.picture属性),目标x坐标,目标y坐标,目标长,目标宽,源x坐标,源y坐标,源长,源宽,处理方式
其中处理方式有好像12种,其中vbsrccopy 指强制覆盖
这个vb自带的内部函数可以自适应的拉伸目标图像
具体详细方法,你可以专门查一查vb的paintpicture方法,我现在在网吧,没有vb程序,所以只能帮你到这种程度了,见谅!

BitBlt是将一幅位图从一个设备场景复制到另一个
目标和源必须都是设备场景
你应该用SetDIBitsToDevice 将一幅与设备无关位图的全部或部分数据直接复制到一个设备

VB声明
Declare Function SetDIBitsToDevice Lib "gdi32" Alias "SetDIBitsToDevice" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal dx As Long, ByVal dy As Long, ByVal SrcX As Long, ByVal SrcY As Long, ByVal Scan As Long, ByVal NumScans As Long, Bits As Any, BitsInfo As BITMAPINFO, ByVal wUsage As Long) As Long
说明
将一幅与设备无关位图的全部或部分数据直接复制到一个设备。这个函数在设备中定义了一个目标矩形,以便接收位图数据。它也在DIB中定义了一个源矩形,以便从中提取数据
返回值
Long,执行成功则返回扫描线的数量,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hdc Long,一个设备场景的句柄。该场景用于接收位图数据
x