Public Type BITMAPINFOHEADER
biSize As Long '结构长度
biWidth As Long '指定位图的宽度,以像素为单位
biHeight As Long '" " 高度 " "
biPlanes As Integer '指定目标设备的级数(必须为 1 )
biBitCount As Integer '每一个像素的位(1,4,8,16,24,32)
biCompression As Long '指定压缩类型(BI_RGB 为不压缩)
biSizeImage As Long '指定图象的大小,以字节为单位
biXPelsPerMeter As Long '指定设备水平分辨率,以每米的像素为单位
biYPelsPerMeter As Long '垂直分辨率,其他同上
biClrUsed As Long '在颜色表中实际使用的色彩索引的个数,用O表示全要使用
biClrImportant As Long '指定认为重要的颜色索引个数,用 0 表示所有颜色均重要
End Type
Public Type RGBQUAD
rgbBlue As Byte
rgbGreen As Byte
rgbRed As Byte
rgbReserved As Byte '保留,必须为 0
End Type
Public Type BITMAPINFO
bmiHeader As BITMAPINFOHEADER '一个 BITMAPINFOHEADER
bmiColors As RGBQUAD '一个 RGBQUAD结构组成的数组
End Type
Public Type BITMAP
bmType As Long '指定了位图的类型。对于逻辑位图,这个成员必须为0。
bmWidth As Long '指定了位图的宽度,以像素为单位。宽度必须大于0
bmHeight As Long '指定了位图的高度,以扫描行为单位。高度必须大于0
bmWidthBytes As Long '指定了每个扫描行中字节的数目。
bmPlanes As Integer '指定了位图中颜色平面的数目。
bmBitsPixel As Integer '指定了每个位平面中用于定义一个像素所需的颜色位数。
bmBits As Long '指向位图中位值的位置。bmBits成员必须是一个指向单字节数组的长指针。
End Type
Public 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)
Public Declare Function DeleteDC& Lib "gdi32" (ByVal hDC As Long)
Public Declare Function CreateCompatibleDC& Lib "gdi32" (ByVal hDC As Long)
Public Declare Function GetDIBits& Lib "gdi32" (ByVal aHDC As Long, ByVal hBitmap As Long, _
ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, _
ByVal wUsage As Long)
Public Declare Function StretchDIBits& Lib "gdi32" (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 wSrcWidth As Long, ByVal wSrcHeight As Long, lpBits As Any, lpBitsInfo As BITMAPINFO, _
ByVal wUsage As Long, ByVal dwRop As Long)
Public Declare Function GetDeviceCaps& Lib "gdi32" (ByVal hDC As Long, ByVal nIndex As Long)
Public Declare Function GetObjectAPI& Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, _
ByVal nCount As Long, lpObject As Any)
Public Const RASTERCAPS& = 38
Public Const RC_DIBTODEV& = &H200
Public Const DIB_RGB_COLORS& = 0
Private Sub Command1_Click()
'预先在Picture1中加载图片文件
'例:红色分量减少50,绿色、兰色分量不变(R=-50,G=0,B=0)
SetGrayBitmap Picture1.hDC, Picture1.Image.Handle, -50, 0, 0
End Sub
Private Sub Form_Load()
Picture1.AutoRedraw = True
Picture1.ScaleMode = 3