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