.版本 2
.程序集 窗口程序集_启动窗口
.程序集变量 位图头结构, 位图头结构
.程序集变量 信息头结构, 信息头结构
.程序集变量 调色板, 调色板
.程序集变量 颜色表, 字节集
.程序集变量 位图宽度, 整数型
.程序集变量 位图高度, 整数型
.程序集变量 BMP, 字节集
.子程序 __启动窗口_创建完毕
.局部变量 x, 整数型
.局部变量 y, 整数型
.局部变量 设备句柄, 整数型
.局部变量 点色, 整数型
' 以下是BMP位图结构
位图宽度 = 120
位图高度 = 120
' 先建立颜色表
设备句柄 = 取设备场景_ (0)
.计次循环首 (位图高度, y)
.计次循环首 (位图宽度, x)
点色 = 取点_ (设备句柄, x, 位图高度 - y)
调色板.蓝色 = GetB (点色)
调色板.绿色 = GetG (点色)
调色板.红色 = GetR (点色)
颜色表 = 颜色表 + 到字节集 (调色板.蓝色) + 到字节集 (调色板.绿色) + 到字节集 (调色板.红色)
' 本源码来自易语言资源网(www.5A5X.com)
.计次循环尾 ()
.计次循环尾 ()
释放设备场景_ (取屏幕句柄_ (), 设备句柄)
' 位图头结构
位图头结构.文件标识 = “BM” ' 必须为 BM
位图头结构.文件长度 = 54 + 取字节集长度 (颜色表)
位图头结构.系统保留1 = 0
位图头结构.系统保留2 = 0
位图头结构.起始位置 = 54
' 信息头结构
信息头结构.结构大小 = 40
信息头结构.位图宽度 = 位图宽度
信息头结构.位图高度 = 位图高度
信息头结构.位图位面数 = 1
信息头结构.位深度 = 24
信息头结构.压缩方式 = #压缩方式_不压缩
信息头结构.位图大小 = 取字节集长度 (颜色表)
信息头结构.水平分辨率 = 3780 ' 本源码来自易语言资源网(www.5A5X.com)
信息头结构.垂直分辨率 = 3780
信息头结构.位图颜色表索引 = 0
信息头结构.位图显示索引 = 0
BMP = 到字节集 (位图头结构.文件标识) + 到字节集 (位图头结构.文件长度) + 到字节集 (位图头结构.系统保留1) + 到字节集 (位图头结构.系统保留2) + 到字节集 (位图头结构.起始位置) + 到字节集 (信息头结构.结构大小) + 到字节集 (信息头结构.位图宽度) + 到字节集 (信息头结构.位图高度) + 到字节集 (信息头结构.位图位面数) + 到字节集 (信息头结构.位深度) + 到字节集 (信息头结构.压缩方式) + 到字节集 (信息头结构.位图大小) + 到字节集 (信息头结构.水平分辨率) + 到字节集 (信息头结构.垂直分辨率) + 到字节集 (信息头结构.位图颜色表索引) + 到字节集 (信息头结构.位图显示索引) ' 转为机器码
底图 = BMP + 颜色表
.子程序 GetR, 字节型
.参数 RGB, 整数型
置入代码 ({ 139, 69, 8, 137, 69, 252, 139, 69, 252, 201, 194, 4, 0 })
' mov eax,[ebp+8]
' mov [ebp-4],eax
' mov eax,[ebp-4]
' leave
' retn 4
返回 (0)
.子程序 GetG, 字节型
.参数 RGB, 整数型
置入代码 ({ 139, 69, 8, 137, 69, 252, 139, 69, 253, 201, 194, 4, 0 })
' mov eax,[ebp+8]
' mov [ebp-4],eax
' mov eax,[ebp-3]
' leave
' retn 4
返回 (0)
.子程序 GetB, 字节型
.参数 RGB, 整数型
置入代码 ({ 139, 69, 8, 137, 69, 252, 139, 69, 254, 201, 194, 4, 0 })
' mov eax,[ebp+8]
' mov [ebp-4],eax
' mov eax,[ebp-2]
' leave
' retn 4
返回 (0)
' 一、文件的组成
' BMP文件由文件头、位图信息头、调色板、数据区等几个部分组成,
' 结构如下:
' 1.位图头结构 长度 14
' 偏移 名称 长度
' 000(000) 文件标识 2 必须为 BM
' 002(002) 文件长度 4 整个位图文件的实际长度
' 006(006) 保留1,保留2 4 必须设为0
' 0010(00A) 起始位置 4 从0起算 +14+40
' 2.信息头结构 长度 40
' 偏移 名称 长度
' 014(00E)结构大小 4 BMP 信息头结构长度
' 018(012)位图宽度 4 图像宽度
' 022(016)位图高度 4 图像高度
' 026(01A)位图位面数 2 目标设备的级数
' 028(01C)位深度 2 每象素所占位数
' 030(01E)压缩方式 4 象素数据的压缩类型
' 034(022)位图大小 4 位图数据的长度
' 038(026)水平分辨率 4 设备水平分辨率
' 042(02A)垂直分辨率 4 设备垂直分辨率
' 046(02E)位图颜色表索引 4 有效颜色数(调色板中实际使用的颜色索引的个数,O表示全要使用)
' 050(032)位图显示索引 4 重要的颜色索引个数,0表示所有颜色均重要
' 3.调色板
' 蓝色(B) 亮度 0-255
' 绿色(G) 亮度 0-255
' 红色(R) 亮度 0-255
|