变量名 | 类 型 | 静态 | 数组 | 备 注 |
BITMAPINFO | BITMAPINFO | | |
位图像素点阵 | 字节集 | | |
位图信息字节集 | 字节集 | | |
位图文件头 | BITMAPFILEHEADER | | |
位图文件头字节集 | 字节集 | | |
位图调色板 | 字节集 | | |
场景句柄1 | 整数型 | | |
位图句柄1 | 整数型 | | |
旧位图句柄1 | 整数型 | | |
位图数据1 | 字节集 | | |
位图指针1 | 整数型 | | |
BITMAPINFO.biSize = 40
GetDIBits_BITMAPINFO (场景句柄, 位图句柄, 0, 0,
{ }, BITMAPINFO, 0
)新的位图深度 =
选择 (新的位图深度 ≠ 1
且 新的位图深度 ≠ 4
且 新的位图深度 ≠ 8
且 新的位图深度 ≠ 16
且 新的位图深度 ≠ 24
且 新的位图深度 ≠ 32, 0, 新的位图深度
)
如果 (新的位图深度 > 0
且 BITMAPINFO.biBitCount ≠ 新的位图深度
)
BITMAPINFO.biBitCount = 新的位图深度

BITMAPINFO.biSizeImage =
左移 (右移 (BITMAPINFO.biWidth × BITMAPINFO.biBitCount + 31, 5
), 2
) × BITMAPINFO.biHeight

判断 (BITMAPINFO.biBitCount = 1
)

位图调色板 =
生成调色板1位图 ()

BITMAPINFO.biClrUsed = 2


BITMAPINFO.biClrImportant = 2

判断 (BITMAPINFO.biBitCount = 4
)

位图调色板 =
生成调色板4位图 ()

BITMAPINFO.biClrUsed = 16


BITMAPINFO.biClrImportant = 16

判断 (BITMAPINFO.biBitCount = 8
)

位图调色板 =
生成调色板8位图 ()

BITMAPINFO.biClrUsed = 256


BITMAPINFO.biClrImportant = 256

判断 (BITMAPINFO.biBitCount = 16
)

BITMAPINFO.biClrUsed = 0


BITMAPINFO.biClrImportant = 0

判断 (BITMAPINFO.biBitCount = 24
)

BITMAPINFO.biClrUsed = 0


BITMAPINFO.biClrImportant = 0

判断 (BITMAPINFO.biBitCount = 32
)

BITMAPINFO.biClrUsed = 0


BITMAPINFO.biClrImportant = 0







判断 (BITMAPINFO.biBitCount = 1
)

位图调色板 =
生成调色板1位图 ()
判断 (BITMAPINFO.biBitCount = 4
)

位图调色板 =
生成调色板4位图 ()
判断 (BITMAPINFO.biBitCount = 8
)

位图调色板 =
生成调色板8位图 ()




BITMAPINFO.biCompression = 0BITMAPINFO.biXPelsPerMeter = 3780
BITMAPINFO.biYPelsPerMeter = 3780
BITMAPINFO.biPlanes = 1
位图信息字节集 =
取空白字节集 (BITMAPINFO.biSize
)RtlMoveMemory_BITMAPINFO (位图信息字节集, BITMAPINFO, BITMAPINFO.biSize
)位图文件头.bfType = 19778
位图文件头.bfOffBits = 14 + BITMAPINFO.biSize + BITMAPINFO.biClrUsed × 4
位图文件头.bfSize = 位图文件头.bfOffBits + BITMAPINFO.biSizeImage
位图文件头.bfReserved1 = 0
位图文件头.bfReserved2 = 0
位图文件头字节集 =
取空白字节集 (14
)RtlMoveMemory_BITMAPFILEHEADER (位图文件头字节集, 位图文件头, 14
)
如果 (新的位图深度 > 0
)
位图像素点阵 =
取空白字节集 (BITMAPINFO.biSizeImage
)
位图数据1 = 位图信息字节集 + 位图调色板 + 位图像素点阵
调用子程序_通用型 (GetProcAddress_汇编 (GetModuleHandleA_汇编 (“gdi32.dll”),
“CreateCompatibleDC”), , 场景句柄1, 0
)
调用子程序_通用型 (GetProcAddress_汇编 (GetModuleHandleA_汇编 (“gdi32.dll”),
“CreateDIBSection”), , 位图句柄1, 0,
PtrBin (位图数据1
), 0,
PtrInt (位图指针1
), 0, 0
)
调用子程序_通用型 (GetProcAddress_汇编 (GetModuleHandleA_汇编 (“gdi32.dll”),
“SelectObject”), , 旧位图句柄1, 场景句柄1, 位图句柄1
)
调用子程序_通用型 (GetProcAddress_汇编 (GetModuleHandleA_汇编 (“gdi32.dll”),
“BitBlt”), , , 场景句柄1, 0, 0, BITMAPINFO.biWidth, BITMAPINFO.biHeight, 场景句柄, 0, 0, 13369376
)
调用子程序_通用型 (GetProcAddress_汇编 (GetModuleHandleA_汇编 (“gdi32.dll”),
“GdiFlush”), ,
)
位图像素点阵 =
指针到字节集 (位图指针1, BITMAPINFO.biSizeImage
)
调用子程序_通用型 (GetProcAddress_汇编 (GetModuleHandleA_汇编 (“gdi32.dll”),
“SelectObject”), , , 场景句柄1, 旧位图句柄1
)
调用子程序_通用型 (GetProcAddress_汇编 (GetModuleHandleA_汇编 (“gdi32.dll”),
“DeleteObject”), , , 位图句柄1
)
调用子程序_通用型 (GetProcAddress_汇编 (GetModuleHandleA_汇编 (“gdi32.dll”),
“DeleteDC”), , , 场景句柄1
)
位图像素点阵 =
指针到字节集 (位图指针, BITMAPINFO.biSizeImage
)
返回 (位图文件头字节集 + 位图信息字节集 + 位图调色板 + 位图像素点阵)|
BITMAPINFO | |
|
biSize | 整数型 | | |
biWidth | 整数型 | | |
biHeight | 整数型 | | |
biPlanes | 短整数型 | | |
biBitCount | 短整数型 | | |
biCompression | 整数型 | | |
biSizeImage | 整数型 | | |
biXPelsPerMeter | 整数型 | | |
biYPelsPerMeter | 整数型 | | |
biClrUsed | 整数型 | | |
biClrImportant | 整数型 | | |
|
BITMAPFILEHEADER | |
|
bfType | 短整数型 | | |
bfSize | 整数型 | | |
bfReserved1 | 短整数型 | | |
bfReserved2 | 短整数型 | | |
bfOffBits | 整数型 | | |
|
RtlMoveMemory_BITMAPINFO | 整数型 | |
|
kernel32.dll |
|
RtlMoveMemory |
|
Destination | 字节集 | | |
Source | BITMAPINFO | | |
Length | 整数型 | | |
|
RtlMoveMemory_BITMAPFILEHEADER | 整数型 | |
|
kernel32.dll |
|
RtlMoveMemory |
|
Destination | 字节集 | | |
Source | BITMAPFILEHEADER | | |
Length | 整数型 | | |
|
GetDIBits_BITMAPINFO | 整数型 | |
|
gdi32.dll |
|
GetDIBits |
|
设备场景句柄 | 整数型 | | |
源位图句柄 | 整数型 | | |
扫描线初始编号 | 整数型 | | |
扫描线数量 | 整数型 | | |
缓冲区指针 | 字节集 | | |
位图结构 | BITMAPINFO | | |
常量标志 | 整数型 | | |