位图类实例讲解

作者:创世魂

 

● 本类说明

 

本类的主要作用就是创建“位图数据”绘制在画板上,也就是通过本类中的相关方法可以在画板上绘制图片。

注意:本类位于“安卓基本类”模块中,必须添加此模块才能使用。

 

 

● 从位图创建

 

帮助文档如下图:

本方法的作用就是从已知的“位图类”对象中,创建一个新的位图对象,并返回。

创建失败返回“空对象”

需要注意的是:本方法创建的位图会与源对象共享数据状态。

 

代码编写如下图:

例如:我们利用“位图类.从资源创建”方法创建位图对象赋值给“位图1”变量。

随后我们调用“位图类.从位图创建”方法,将“位图1”变量填入参数内,最后赋值给“位图2”

这样“位图2”就有了“位图1”的数据。

最后调用“画板对象.画位图”方法,画“位图2”,同样也可以将导入的“可绘制资源”绘制出来。

 

 

● 复制创建

 

帮助文档如下图:

本方法和“从位图创建”方法类似,不同之处,本方法增加了两个参数。

分别为“位图配置格式”“是否易变”

配置格式中有三个常量可供调用,通常情况下使用:“位图配置格式.ARGB8888”即可。

“是否易变”参数,简单来说就是,如果填写“真”修改复制位图时不会影响到源位图,为假则反之。

代码编写可参考“从位图创建”方法。

 

 

● 从位图区域创建

 

帮助文档如下图:

本方法简单来说,就是从位图的指定区域裁剪一块区域,创建一个位图对象。

裁剪的坐标通过“参数2,3,4,5”决定。

注意:使用本方法,会与源对象共享状态和数据。

 

代码编写如下图:

直接复制“从位图创建”那一套代码,然后进行一些修改。

增加“位图类.从位图区域创建”方法,将“位图1”填入参数内,分别写入想要裁剪的区域。

例如:我这里填写的(0,0,100,100)表示从左上角开始,裁剪一个“100*100”的矩形。

最后绘制“位图2”查看效果。

 

运行效果如下图:

左图:为绘制“位图2”的效果。

右图:原图完整效果。

 

 

● 从位图缩放创建

 

帮助文档如下图:

本方法的作用,就是根据已知的“位图类”,根据“参数2,3”指定的“高度和宽度”进行缩放处理。

参数4,可以用来指定是否进行过滤算法。

代码编写参考“从位图区域创建”

 

 

● 从字节数组创建

 

帮助文档如下图:

本方法的作用就是通过“字节数组”进行创建位图,可以用来“读取存储卡图片”来进行绘制。

必须要保证载入的“字节数组”能够进行绘制,不然“位图类”可能会创建失败。

“起始偏移”“数据尺寸”通常情况下默认值即可,不需要填写。

参数4:如果图片过大时,可以通过本参数进行压缩。

 

代码编写如下图:

定义“位图类”“字节[]”变量。

随后利用“读入文件”方法,读取存储卡根目录存放的一张“1.png”

点击查看:“文件操作教程”

读取的字节数组赋值给定义的“字节图片”变量。

随后可通过本方法创建“位图”对象。

最后调用“画位图”方法绘制位图。

 

运行效果如下图:

这是一张提前放在存储卡内的图片,现在成功绘制在画板上。

 

 

● 取字节数组位图尺寸

 

帮助文档如下图:

本方法的作用就是获得“字节数组”的图片高度和宽度。

参数2、3通常情况下为默认值即可。

 

代码编写如下图:

保持上一个方法的代码不变,增加一个“尺寸类”变量,设置参考。

随后调用“位图类.取字节数组位图尺寸”方法,将“字节图片”变量填入参数。

将整个方法赋值给“尺寸”变量。

通过尺寸变量的“高度”“宽度”变量可获取当前图片的高度和宽度。

最后提供给“提示框”演示结果。

 

运行效果如下图:

可以看到成功的读取了图片的高度和宽度值,单位像素。

 

 

● 从文件创建

 

帮助文档如下图:

本方法的作用就是直接从“完整的路径文件名”创建“位图类”对象。

参数1:可参考“从字节数组创建”方法中“读入文件”使用的文件路径。

参数2:一般情况下为默认值即可。

 

 

● 取文件位图尺寸

 

帮助文档如下图:

本方法的作用是通过完整的路径文件名,取出位图尺寸。

可参考“从字节数组创建”方法中“读入文件”使用的文件路径。

本方法返回的也是“尺寸类”对象,通过“尺寸类.高度”“宽度”就可以读取具体数值。

 

 

● 从资产文件创建

 

帮助文档如下图:

在安卓程序结构中,有一个目录的名字叫“assets”,在本目录内存放的文件称为“资产文件”

导入“资产文件”后,直接在需要用到的地方输入“文件名”即可“引用资产文件”

 

代码编写如下图:

“启动类”中,后面的属性名填写“@安卓.外部资产”,点击后面的按钮就可以“导入资产”

导入后的资产会自动添加到安卓程序的“assets”目录中。

比如:我这里导入了一张图片,图片名为“tu.jpg”

随后在“异步绘制帧”方法下使用“位图类.从资产文件创建”方法时,参数内直接输入“tu.jpg”就可以引用这张图片。

最后的结果必然绘制成功,不再展示。

 

 

● 取资产文件位图尺寸

 

帮助文档如下图:

本方法的作用就是“取资产文件”中位图的尺寸。

务必要保证,输入的文件名为位图文件,否则会返回空对象。

调用方法:“位图类.取资产文件位图尺寸()”方法内直接输入资产文件名即可。

 

 

● 从资源创建

 

帮助文档如下图:

直接给“参数1”填写想要载入的可绘制资源即可。

本方法在本教程内多次使用,此处不再演示。

 

 

● 取资源位图尺寸

 

帮助文档如下图:

直接在参数内填写想要取尺寸的“可绘制资源”即可。

本方法同样也是返回的尺寸类。

 

 

● 压缩输出

 

帮助文档如下图:

本方法的作用,就是将“位图类”中的位图数据,放到“输出流”对象中。

通过“流对象”可以将位图写出到“存储卡”,以达到保存位图数据的目的。

参数1:操作要输出的位图类对象。

参数2:“位图压缩格式”中有三个常量可以使用,调用方式:“位图压缩格式.XXX”

参数3:可以用来控制文件输出尺寸的大小。如果要输出的位图很大,可以通过控制本参数的数值控制。

当然数值越小,位图会相应的丢失一些像素,导致图片模糊。

参数4:填写要使用的流对象即可。

 

代码编写如下图:

比如:想让一个资产文件写出到手机存储卡上。

首先参考“从资产文件创建”方法导入一个资产文件。

随后在“异步绘制帧”事件下,定义三个变量,分别为“位图类”“字节数组输出流”“字节[]”

调用“从资产文件创建”方法,创建位图对象,赋值给定义的位图变量。

然后调用“字节数组输出流.创建”方法,创建输出流对象,赋值给定义的流变量。

紧接着就可以使用“压缩输出”方法,将位图数据放到流对象中。

“流对象”中,有一个方法叫做“取已写入数据()”,本方法可以将流对象中的“字节数组”取出。

我们把这个方法赋值给“字节数组”变量。

最后“关闭”流对象。

然后调用“写出文件”方法,将字节数组写出到一个图文文件名。

 

运行效果如下图:

最终结果,运行后点击“按钮1”就弹出提示“保存成功”

随后打开了“文件管理器”就可以看到图片成功保存在了存储卡内。

 

 

● 取缩放宽度
● 取缩放高度

 

帮助文档如下图:

以上两个方法的作用,就是返回指定“位图类”在当前设备绘制时,返回推荐的高度和宽度。

除了需要提供位图类之外,还需要一个“目的设备密度”参数。

可以使用“常用显示密度”中定义的常量值来指定。

返回的宽度和高度也是推荐值,大家可以根据实际情况决定是否使用这个推荐值。

 

 

● 取透明度位图

 

帮助文档如下图:

简单来说就是将位图所有的颜色丢掉,只保留透明度部分。

本方法的作用可以用来绘制阴影,失败返回空对象。

 

代码编写如下图:

定义“画笔类”变量,设置颜色为“黄色”

“异步绘制帧”事件下,定义两个“位图类”变量和一个“可绘制资源”,给可绘制资源导入一张图片。

首先创建“源位图”对象,然后将其绘制在画板上做参考。

随后调用“源位图.取透明度位图()”取出透明位图赋值给“透明位图”变量。

然后将“透明位图”绘制在画板上,注意:此处要填写“画笔”变量。

填写“画笔”变量后,绘制时就会给“透明位图”填充颜色。

然后继续将“透明位图”“源位图”绘制到同一个坐标,“源位图”进行几个像素的偏移。

 

运行效果如下图:

可以看到两个合并在一起后,“黄色”的位图,此时充当了一个类似阴影层的角色。

 

 

● 像素数据尺寸(读)

 

帮助文档如下图:

读属性,返回当前位图像素数据尺寸大小,单位字节。

注意:并非整个位图的尺寸。

调用方式:“位图变量.像素数据尺寸”

注:“位图变量”是指通过“位图类”创建的变量名称。

以下的读属性均为同一个模式调用。

 

 

● 宽度(读)
● 高度(读)

 

以上两个读属性,分别可以读取位图的高度和宽度。

 

 

● 密度(读)

 

帮助文档如下图:

本读属性用来读取当前位图的显示密度,如果密度未知返回0。

 

 

● 支持透明度(读)

 

帮助文档如下图:

判断当前位图是否支持透明度通道。

如果导入的位图为“jpg”格式,本属性必然返回“假”

如果为“gif”“png”本属性必然返回“真”

 

 

● 易变模式(读)

 

帮助文档如下图:

本读属性的作用是判断当前“位图类”是否启用了“易变模式”

关于“易变模式”可看“红框”内的详细说明。

 

 

● 配置格式(读)

 

帮助文档如下图:

本读属性的作用,就是用来读取“复制创建”方法填写的“位图配置格式”