位图操作支持库

位图操作支持库 帮助手册20080818版 返回支持库手册 返回首页

该支持库实现了对位图（*.bmp）文件数据的操作。

操作系统支持： Windows

其它数据类型：

位图

适用版本，位图操作支持库 （1.0#2版）


位图

位图 普通类型 操作系统支持：Windows 跳至：位图操作支持库

该类型支持对标准的bmp文件格式数据的相关操作，各种压缩格式暂不支持。注：16位的bmp仅支持BI_RGB格式。

方法：

取错误信息 | 是否为空 | 创建 | 从句柄创建
载入文件 | 载入数据 | 取位图数据 | 取宽度
取高度 | 取位深度 | 转换位深度 | 取某点颜色
取某点颜色索引 | 置某点颜色 | 置某点颜色索引 | 是否使用颜色表
取颜色表 | 置颜色表 | 取像素点阵 | 置像素点阵
取指针 | 复制到 | 旋转 | 旋转90度
镜像 | 创建兼容位图 |  |

参见：基本数据类型


取错误信息 方法 操作系统支持：Windows 所属对象：位图

在调用本数据类型的其他命令失败后可以随后立即调用本命令取得失败的原因。如果前一个操作是成功的，返回空文本。

语法： 文本型 位图．取错误信息 （）

例程:

说明:

通过“取错误信息”命令获取上一次位图操作时产生的错误信息。使用信息框显示位图操作时产生的错误信息。

参见:例程


是否为空 方法 操作系统支持：Windows 所属对象：位图

如果该位图已经成功创建或载入，返回真，否则返回假。

语法： 逻辑型 位图．是否为空 （）

例程:

说明:

通过“是否为空”命令判断“位图”变量是否包含数据，如果不包含数据则调用“报错”子程序显示错误信息。


创建 方法 操作系统支持：Windows 所属对象：位图

创建一个指定大小、位深度的位图，本对象内原有数据会被自动释放。成功返回真，失败返回假。如果失败，随后立即调用本对象的“取错误信息”命令将取得一个非空文本，该文本为失败的原因。

语法： 逻辑型 位图．创建 （宽度， 高度， 位深度， ［初始颜色］）

参数名 | 描 述
宽度 | 必需的； 整数型。位图的实际宽度。
高度 | 必需的； 整数型。位图的实际高度。
位深度 | 必需的； 短整数型。位图的颜色位深度。参看“取位深度”命令。
初始颜色 | 可选的； 整数型。位图的初始颜色。如果本参数被省略，则新建的位图内包含的颜色数据不会被初始化，这样可以加快创建的速度，但是在使用本位图前可能需要手动进行必要的初始化。

例程:

说明:

通过“创建”命令创建一幅大小和“图片框”相同的图片。


从句柄创建 方法 操作系统支持：Windows 所属对象：位图

为高级用户提供，初级用户无需掌握；从一个位图句柄（HBITMAP）创建出设备无关位图，该位图原有数据会被自动释放。成功返回真，失败返回假。如果失败，随后立即调用本对象的“取错误信息”命令将取得一个非空文本，该文本为失败的原因。注意：本方法创建出来的位图的颜色质量可能会受到当前屏幕显示模式的影响。

语法： 逻辑型 位图．从句柄创建 （位图句柄）

参数名 | 描 述
位图句柄 | 必需的； 整数型。一个位图句柄（HBITMAP）。

例程:

说明:

通过“从句柄创建”命令，根据一个位图句柄创建出一幅位图。

注意：创建出的位图并不和位图句柄所对应的资源位深相同。创建出的位图根据当前屏幕的位深创建。


载入文件 方法 操作系统支持：Windows 所属对象：位图

从bmp文件载入位图数据，成功返回真，失败返回假。如果失败，随后立即调用本对象的“取错误信息”命令将取得一个非空文本，该文本为失败的原因。

语法： 逻辑型 位图．载入文件 （位图文件名）

参数名 | 描 述
位图文件名 | 必需的； 文本型。

例程:

说明:

通过“载入文件”命令将指定位图文件数据载入到“位图”类型变量中。


载入数据 方法 操作系统支持：Windows 所属对象：位图

从字节集或资源载入位图数据，成功返回真，失败返回假。如果失败，随后立即调用本对象的“取错误信息”命令将取得一个非空文本，该文本为失败的原因。

语法： 逻辑型 位图．载入数据 （位图文件数据）

参数名 | 描 述
位图文件数据 | 必需的； 字节集。

例程:

说明:

通过“载入数据”命令，将位图数据载入到位图变量中。


取位图数据 方法 操作系统支持：Windows 所属对象：位图

取得该位图的二进制数据，数据格式为BMP文件格式，可以直接把本数据赋值给组件的“图片”/“底图”等属性或写到一个*.bmp文件。失败返回空字节集。如果失败，随后立即调用本对象的“取错误信息”命令将取得一个非空文本，该文本为失败的原因。

语法： 字节集 位图．取位图数据 （）

例程:

说明:

通过“取位图数据”命令取出“位图”变量中的数据显示在图片框中。


取宽度 方法 操作系统支持：Windows 所属对象：位图

取得该位图的实际宽度，失败返回-1。如果失败，随后立即调用本对象的“取错误信息”命令将取得一个非空文本，该文本为失败的原因。

语法： 整数型 位图．取宽度 （）

例程:

说明:

通过“取宽度”命令获取位图的宽度，并将获得的宽度显示在“位图属性窗口”中的“宽度编辑框”内。


取高度 方法 操作系统支持：Windows 所属对象：位图

取得该位图的实际高度，如果该位图的颜色点阵为正向（top-down）存储，高度为负值（不常见）。失败返回-1。如果失败，随后立即调用本对象的“取错误信息”命令将取得一个非空文本，该文本为失败的原因。

语法： 整数型 位图．取高度 （）

例程:

说明:

通过“取高度”命令获取位图高度，将获取的高度显示在“位图属性窗口”中的“高度编辑框”内。


取位深度 方法 操作系统支持：Windows 所属对象：位图

取得该位图中颜色的位深度。失败返回-1。如果失败，随后立即调用本对象的“取错误信息”命令将取得一个非空文本，该文本为失败的原因。有效的返回值及其含义如下： 1： 单色； 4： 4位色（16色）； 8： 8位色（256色）； 16： 16位色（65536色）； 24： 24位色（16777216色）； 32： 32位色（4294967296色）。

语法： 短整数型 位图．取位深度 （）

例程:

说明:

通过“取位深度”命令获取位图的位深度，将获得的信息显示在“位图属性窗口”中的“位深编辑框”内。


转换位深度 方法 操作系统支持：Windows 所属对象：位图

转换本位图对象的颜色位深度，并返回转换后的对象。失败返回空位图对象。如果失败，随后立即调用本对象的“取错误信息”命令将取得一个非空文本，该文本为失败的原因。

语法： 位图 位图．转换位深度 （欲转换为的位深度）

参数名 | 描 述
欲转换为的位深度 | 必需的； 短整数型。本参数的有效值请参看本数据类型的“取位深度”命令。

例程:

说明:

通过“转换位深度”命令将位图转换到指定位深格式的位图。

注意：高位转低位时会使色彩丢失。低位转高位时，虽然画面没改变。但位图的位深已经被改变了。相同尺寸的位图，位深不同大小也存在着很大差距。


取某点颜色 方法 操作系统支持：Windows 所属对象：位图

取得该位图中某点的实际颜色值，以位图的左上角为坐标原点。注意，对位深度为16的位图，取得的颜色可能有少许误差，这是由16位位图的特殊内部结构决定的。如果指定的像素点坐标越界，将导致调用失败，返回-1。如果失败，随后立即调用本对象的“取错误信息”命令将取得一个非空文本，该文本为失败的原因。

语法： 整数型 位图．取某点颜色 （横坐标， 纵坐标）

参数名 | 描 述
横坐标 | 必需的； 整数型。以像素为单位。如果该参数指定的坐标超出了位图的实际范围，本命令将失败。
纵坐标 | 必需的； 整数型。以像素为单位。如果该参数指定的坐标超出了位图的实际范围，本命令将失败。

例程:

说明:

通过“取某点颜色”命令获取指定点的颜色值。


取某点颜色索引 方法 操作系统支持：Windows 所属对象：位图

为高级用户提供，初级用户无需掌握；取得该位图中某点的颜色在颜色表中的索引，以位图的左上角为坐标原点。失败返回-1。对使用颜色表的位图调用本命令比调用“取某点颜色”执行速度更快。对不使用颜色表的位图调用该方法将导致调用失败。如果失败，随后立即调用本对象的“取错误信息”命令将取得一个非空文本，该文本为失败的原因。

语法： 整数型 位图．取某点颜色索引 （横坐标， 纵坐标）

参数名 | 描 述
横坐标 | 必需的； 整数型。以像素为单位。如果该参数指定的坐标超出了位图的实际范围，本命令将失败。
纵坐标 | 必需的； 整数型。以像素为单位。如果该参数指定的坐标超出了位图的实际范围，本命令将失败。

例程:

说明:

通过“取某点颜色索引”命令获取指定点的颜色表索引值。

注意：如果被取索引的位图不使用颜色表，本命令将会出错。


置某点颜色 方法 操作系统支持：Windows 所属对象：位图

参看“取某点颜色”。成功返回真，否则返回假。注意，如果参数3所指定的颜色值不被当前位图格式所支持，系统会自动选择最接近的有效颜色。

语法： 逻辑型 位图．置某点颜色 （横坐标， 纵坐标， 欲置入的值）

参数名 | 描 述
横坐标 | 必需的； 整数型。以像素为单位。如果该参数指定的坐标超出了位图的实际范围，本命令将失败。
纵坐标 | 必需的； 整数型。以像素为单位。如果该参数指定的坐标超出了位图的实际范围，本命令将失败。
欲置入的值 | 必需的； 整数型。

例程:

说明:

通过“置某点颜色”命令设置指定点的颜色值。


置某点颜色索引 方法 操作系统支持：Windows 所属对象：位图

为高级用户提供，初级用户无需掌握；参看“取某点颜色索引”。成功返回真，否则返回假。如果该位图不使用颜色表或参数3指定的颜色索引超出了该位图颜色表的最大索引，本命令调用失败。如果失败，随后立即调用本对象的“取错误信息”命令将取得一个非空文本，该文本为失败的原因。

语法： 逻辑型 位图．置某点颜色索引 （横坐标， 纵坐标， 欲置入的值）

参数名 | 描 述
横坐标 | 必需的； 整数型。以像素为单位。如果该参数指定的坐标超出了位图的实际范围，本命令将失败。
纵坐标 | 必需的； 整数型。以像素为单位。如果该参数指定的坐标超出了位图的实际范围，本命令将失败。
欲置入的值 | 必需的； 整数型。

例程:

说明:

通过“置某点颜色索引”命令设置某点颜色表索引值。

注意：索引从1开始；横坐标和纵坐标从0开始，如果此位图没有使用颜色表，执行本命令将会出错。


是否使用颜色表 方法 操作系统支持：Windows 所属对象：位图

为高级用户提供，初级用户无需掌握；位深度小于16的位图使用颜色表，否则不使用。调用本命令后可能产生三种情况： 1. 位图尚未创建/载入（即位图为空）。返回假，且设置“错误信息”为非空文本，随后调用“取错误信息”将取回该错误说明信息。 2. 位图已经创建，该位图使用颜色表。返回真。 3. 位图已经创建，该位图不使用颜色表。返回假。如果随后调用“取错误信息”将返回空文本。

语法： 逻辑型 位图．是否使用颜色表 （）

例程:

说明:

通过“是否使用颜色表”命令判断位图是否使用了颜色表。


取颜色表 方法 操作系统支持：Windows 所属对象：位图

为高级用户提供，初级用户无需掌握；取得该位图使用的颜色表数据（注意，位深度大于等于16的位图不使用颜色表）。成功返回一个包含颜色表数据的数组，失败返回空数组（成员数为0）。如果失败，随后立即调用本对象的“取错误信息”命令将取得一个非空文本，该文本为失败的原因。

语法： 整数型数组 位图．取颜色表 （）

例程:

说明:

通过“取颜色表”命令获得位图的颜色索引表。根据颜色索引表计算出所占字节大小。


置颜色表 方法 操作系统支持：Windows 所属对象：位图

为高级用户提供，初级用户无需掌握；参看“取颜色表”。成功返回真，否则返回假。如果该位图不使用颜色表或指定的颜色表格式错误，本命令调用失败。如果失败，随后立即调用本对象的“取错误信息”命令将取得一个非空文本，该文本为失败的原因。 注意，操作位图的颜色表需要对位图格式有一定的了解，错误的操作可能会破坏位图数据，请参阅相关资料。

语法： 逻辑型 位图．置颜色表 （欲置入的颜色表数据）

参数名 | 描 述
欲置入的颜色表数据 | 必需的； 整数型，参数数据只能提供数组数据。

例程:

说明:

通过“置颜色表”命令可以更改位图的颜色表数据。如果，颜色表格式不符合要求，将触发错误。

注：可以使用“取错误信息”命令获得出错原因。


取像素点阵 方法 操作系统支持：Windows 所属对象：位图

为高级用户提供，初级用户无需掌握；取得该位图中代表实际像素点阵的数据，该数据的排列格式取决于该位图的位深度和实际宽度，具体请参阅相关资料。失败返回空字节集。如果失败，随后立即调用本对象的“取错误信息”命令将取得一个非空文本，该文本为失败的原因。

语法： 字节集 位图．取像素点阵 （）

例程:

说明:

通过“取像素点阵”获取位图颜色点阵数据，将颜色点阵数据的大小显示在“位图属性”窗口中的“位图数据编辑框”内。


置像素点阵 方法 操作系统支持：Windows 所属对象：位图

为高级用户提供，初级用户无需掌握；参看“取像素点阵”。成功返回真，否则返回假。如果指定数据的格式错误，本命令调用失败。如果失败，随后立即调用本对象的“取错误信息”命令将取得一个非空文本，该文本为失败的原因。 注意，操作位图的像素点阵需要对位图格式有一定的了解，错误的操作可能会破坏位图数据，请参阅相关资料。

语法： 逻辑型 位图．置像素点阵 （欲置入的点阵数据）

参数名 | 描 述
欲置入的点阵数据 | 必需的； 字节集。

例程:

说明:

通过“置像素点阵”命令更改位图的像素点阵数据。如果不符合格式，将会触发错误。

注：出错后可以使用“取错误信息”命令获得出错原因。


取指针 方法 操作系统支持：Windows 所属对象：位图

为高级用户提供，初级用户无需掌握；取得该位图数据中关键段的指针，成功返回真，否则返回假。如果失败，随后立即调用本对象的“取错误信息”命令将取得一个非空文本，该文本为失败的原因。 本命令适用于一些特殊的需要直接操作内存指针场合，一般用户不推荐使用！！如果需要修改这些指针所指向的数据，请务必谨慎，以免造成程序崩溃等意外结果。

语法： 逻辑型 位图．取指针 （位图信息头指针， 像素点阵数据指针）

参数名 | 描 述
位图信息头指针 | 必需的； 整数型，参数数据只能提供变量。该参数接收一个指向“位图信息头(BITMAPINFOHEADER)”结构的指针，也是指向BITMAPINFO结构的指针。
像素点阵数据指针 | 必需的； 整数型，参数数据只能提供变量。该参数接收一个指向位图实际像素点阵数据的指针。

例程:

说明:

通过“取指针”命令获取位图信息头数据和像素数据的内存地址指针。

提示：例子中只是说明怎样使用。此命令一般配合API使用。


复制到 方法 操作系统支持：Windows 所属对象：位图

将本位图的某一矩形区域复制到目的位图，成功返回真，失败返回假。如果失败，随后立即调用本对象的“取错误信息”命令将取得一个非空文本，该文本为失败的原因。

语法： 逻辑型 位图．复制到 （欲复制区域的左边， 欲复制区域的顶边， ［欲复制区域的宽度］， ［欲复制区域的高度］， ［复制到的目的位图］， 欲复制到位置左边， 欲复制到位置顶边， ［透明色］）

参数名 | 描 述
欲复制区域的左边 | 必需的； 整数型，初始值为“0”。
欲复制区域的顶边 | 必需的； 整数型，初始值为“0”。
欲复制区域的宽度 | 可选的； 整数型。如果本参数省略，默认值为源位图宽度。
欲复制区域的高度 | 可选的； 整数型。如果本参数省略，默认值为源位图高度。
复制到的目的位图 | 可选的； 位图。如果本参数省略，则复制到源位图对象。注意：如果是复制到自身，且欲复制区域和复制到的区域有重叠部分，可能出现重叠复制。
欲复制到位置左边 | 必需的； 整数型，初始值为“0”。注意：复制到的矩形不能超出目的位图的区域，否则本命令调用失败。
欲复制到位置顶边 | 必需的； 整数型，初始值为“0”。注意：复制到的矩形不能超出目的位图的区域，否则本命令调用失败。
透明色 | 可选的； 整数型。透明色为源位图在复制过程中将被忽略的颜色。如果本参数省略，不使用透明色。

例程:

说明:

通过“复制到”命令将一幅位图中的数据复制到另一幅位图中。

注意：操作时需注意位图的大小，如果超出将出错。


旋转 方法 操作系统支持：Windows 所属对象：位图

为高级用户提供，初级用户无需掌握；把一个位图旋转一个角度，并返回旋转后的位图。如果失败，随后立即调用本对象的“取错误信息”命令将取得一个非空文本，该文本为失败的原因。注意：对一个位图进行旋转后会有少许失真。如果本旋转算法的精度无法满足要求，请根据实际情况用“取某点颜色/索引”、“置某点颜色/索引”结合相应的的旋转算法进行操作。

语法： 位图 位图．旋转 （旋转角度， 背景填充颜色）

参数名 | 描 述
旋转角度 | 必需的； 小数型。正值代表正时针旋转，负值代表逆时针旋转。
背景填充颜色 | 必需的； 整数型。如果位图经过旋转后尺寸变大，新增的部分将用该颜色填充。

例程:

说明:

通过“旋转”命令将位图以指定角度进行旋转。

注意，此命令可能会造成位图数据的损失。如果需要连续旋转一个图像，请在最初的原图像的基础上进行旋转。


旋转90度 方法 操作系统支持：Windows 所属对象：位图

为高级用户提供，初级用户无需掌握；将该位图顺时针或逆时针旋转90度，并返回旋转后的位图，失败返回空位图。如果失败，随后立即调用本对象的“取错误信息”命令将取得一个非空文本，该文本为失败的原因。

语法： 位图 位图．旋转90度 （是否顺时针旋转）

参数名 | 描 述
是否顺时针旋转 | 必需的； 逻辑型，初始值为“真”。真，顺时针方向旋转；假，逆时针。

例程:

说明:

通过“旋转90度”命令，将位图旋转90度。


镜像 方法 操作系统支持：Windows 所属对象：位图

为高级用户提供，初级用户无需掌握；将该位图做水平/垂直镜像，并返回镜像后的新位图。失败返回空位图。如果失败，随后立即调用本对象的“取错误信息”命令将取得一个非空文本，该文本为失败的原因。

语法： 位图 位图．镜像 （是否水平镜像， 是否垂直镜像）

参数名 | 描 述
是否水平镜像 | 必需的； 逻辑型。
是否垂直镜像 | 必需的； 逻辑型。

例程:

说明:

通过“镜像”命令使位图等于它的镜像的数据。


创建兼容位图 方法 操作系统支持：Windows 所属对象：位图

为高级用户提供，初级用户无需掌握；根据指定窗口的设备环境（DC）创建出一个兼容位图（设备相关位图），并返回其位图句柄（HBITMAP），失败返回0。如果失败，随后立即调用本对象的“取错误信息”命令将取得一个非空文本，该文本为失败的原因。 本命令通常用于和API交互，一般用户不推荐使用。注意：该命令成功创建的位图句柄在不再需要时☆必须☆调用 DeleteObject API函数删除之！！否则可能造成GDI资源泄露，产生意外错误。 该API在易语言中的声明如下： .DLL命令 删除对象, 逻辑型, , "DeleteObject" .参数 GDI对象句柄, 整数型 直接把以上两行复制粘贴到易语言DLL命令区即可使用该API。

语法： 整数型 位图．创建兼容位图 （［窗口句柄］）

参数名 | 描 述
窗口句柄 | 可选的； 整数型。所创建出来的位图将和该窗口的设备环境（DC）兼容。如果本参数省略，默认使用桌面窗口句柄。

例程:

说明:

通过“创建兼容位图”命令，根据位图数据创建一幅兼容指定设备场景的位图。

提示：此命令一般配合API使用。


系统基本数据类型列表及其说明如下：

1. 字节型。可容纳 0 到 255 之间的数值。

2. 短整数型。可容纳 -32,768 到 32,767 之间的数值，尺寸为 2 个字节。

3. 整数型。可容纳 -2,147,483,648 到 2,147,483,647 之间的数值，尺寸为 4 个字节。

4. 长整数型。可容纳 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 之间的数值，尺寸为 8 个字节。

5. 小数型。可容纳 3.4E +/- 38 (7位小数) 之间的数值，尺寸为 4 个字节。

6. 双精度小数型。可容纳 1.7E +/- 308 (15位小数) 之间的数值，尺寸为 8 个字节。

7. 逻辑型。值只可能为“真”或“假”，尺寸为 2 个字节。“真”和“假”为系统预定义常量，其对应的英文常量名称为“true”和“false”。

8. 日期时间型。用作记录日期及时间，尺寸为 8 个字节。

9. 文本型。用作记录一段文本，文本由以字节 0 结束的一系列字符组成。

10.字节集。用作记录一段字节型数据。字节集与字节数组之间可以互相转换，在程序中允许使用字节数组的地方也可以使用字节集，或者相反。字节数组的使用方法，譬如用中括号对（“[]”）加索引数值引用字节成员，使用数组型数值数据进行赋值等等，都可以被字节集所使用。两者之间唯一的不同是字节集可以变长，因此可把字节集看作可变长的字节数组。

11.子程序指针。用作指向一个子程序，尺寸为 4 个字节。具有此数据类型的变量可以用来间接调用子程序。参见例程 sample.e 中的相应部分。

    在以上的基本数据类型中，字节型、短整数型、整数型、长整数型、小数型、双精度小数型被统称为“数值型”，它们之间可以任意转换。不过编程需要注意转换可能带来的精度丢失。譬如：将整数 257 转换为字节后的结果为 1 ，这是因为值 257 超出了字节型数据的最大上限 255 ，从而产生了溢出。

    另外，通用型数据类型仅在系统内部使用，它能够匹配所有的系统基本数据类型、库定义数据类型、自定义数据类型。