作者:创世魂
● 本类说明
本类的主要作用就是创建“位图数据”绘制在画板上,也就是通过本类中的相关方法可以在画板上绘制图片。
注意:本类位于“安卓基本类”模块中,必须添加此模块才能使用。
● 从位图创建
帮助文档如下图:
本方法的作用就是从已知的“位图类”对象中,创建一个新的位图对象,并返回。
创建失败返回“空对象”。
需要注意的是:本方法创建的位图会与源对象共享数据状态。
代码编写如下图:
例如:我们利用“位图类.从资源创建”方法创建位图对象赋值给“位图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”本属性必然返回“真”。
● 易变模式(读)
帮助文档如下图:
本读属性的作用是判断当前“位图类”是否启用了“易变模式”。
关于“易变模式”可看“红框”内的详细说明。
● 配置格式(读)
帮助文档如下图:
本读属性的作用,就是用来读取“复制创建”方法填写的“位图配置格式”。