利用系统位图函数CreateCompatibleBitmap处理截屏图像

本文介绍了如何利用VB6和Windows API中的CreateCompatibleBitmap函数来处理屏幕截图,包括后台截屏和窗口图像的处理。通过位图信息头和颜色表的定义,详细阐述了位图数据的结构,并提供了获取指定像素颜色的函数SgetC和MutiGetC的实现代码。
摘要由CSDN通过智能技术生成

Option Explicit
'--------------------------------------------------------------------------
'   您可以在这里添加自己的插件函数,插件的制作和使用方法如下:
'   利用CreateCompatibleBitmap函数,后台截屏,截窗口处理图像,
'   以下是原理与实现过程。
'   2022-1-29备注/杭州/徐宵龙
'--------------------------------------------------------------------------
Private Const DIB_RGB_COLORS        As Long = &H0&
Private Const BI_RGB                As Long = &H0&
Private Const OBJ_BITMAP            As Long = &H7&
Private Type RECT
    Left            As Long
    Top             As Long
    Right           As Long
    Bottom          As Long
End Type

'位图信息头。位图信息头包含了单个像素所用字节数以及描述颜色的格式,
'此外还包括位图的宽度、高度、目标设备的位平面数、图像的压缩格式。以下是位图信息头结构的定义
Private Type BITMAPINFOHEADER
    biSize          As Long
    biWidth         As Long
    biHeight        As Long
    biPlanes        As Integer
    biBitCount      As Integer
    biCompression   As Long
    biSizeImage     As Long
    biXPelsPerMeter As Long
    biYPelsPerMeter As Long
    biClrUsed       As Long
    biClrImportant  As Long
End Type
'这个结构的长度是固定的,为40个字节(LONG为32位整数),各个域的说明如下:
'biSize'指定这个结构的长度,为40。
'biWidth'指定图象的宽度,单位是象素。
'biHeight'指定图象的高度,单位是象素。
'biPlanes'必须是1,不用考虑。
'biBitCount'指定表示颜色时要用到的位数,常用的值为1(黑白二色图), 4(16色图), 8(256色), 24(真彩色图)(新的.bmp格式支持32位色,这里就不做讨论了)。
'biCompression'指定位图是否压缩,有效的值为BI_RGB,BI_RLE8,BI_RLE4,BI_BITFIELDS(都是一些Windows定义好的常量)。
'要说明的是,Windows位图可以采用RLE4,和RLE8的压缩格式,但用的不多。我们今后所讨论的只有第一种不压缩的情况,即biCompression为BI_RGB的情况。
'biSizeImage'指定实际的位图数据占用的字节数,其实也可以从以下的公式中计算出来:
'biSizeImage = biWidth ' × biHeight
'要注意的是: 上述公式中的biWidth '必须是4的整倍数(所以不是biWidth,而是biWidth’,表示大于或等于biWidth的,最接近4的整倍数。
'举个例子,如果biWidth=240,则biWidth’=240;如果biWidth=241,biWidth’=244)。
'如果biCompression为BI_RGB,则该项可能为零
'biXPelsPerMeter'指定目标设备的水平分辨率,单位是每米的象素个数,关于分辨率的概念。
'biYPelsPerMeter'指定目标设备的垂直分辨率,单位同上。
'biClrUsed'指定本图象实际用到的颜色数,如果该值为零,则用到的颜色数为2biBitCount。
'biClrImportant'指定本图象中重要的颜色数,如果该值为零,则认为所有的颜色都是重要的。

Private Type RGBQUAD
    rgbBlue         As Byte
    rgbGreen        As Byte
    rgbRed          As Byte
    rgbReserved     As Byte
End Type
'rgbBlue
'The intensity of blue in the color.蓝色的颜色强度。
'rgbGreen rgbGreen
'The i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xxlcar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值