BitmapData介绍链接如下
https://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html
函数原型
public function draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void
参数
source:IBitmapDrawable — 要绘制到 BitmapData 对象的显示对象或 BitmapData 对象。(DisplayObject 和 BitmapData 类实现 IBitmapDrawable 接口。) | |
matrix:Matrix (default = null ) — 一个 Matrix 对象,用于缩放、旋转位图或转换位图的坐标。如果不想将矩阵转换应用于图像,请将此参数设置为恒等矩阵(使用默认 new Matrix() 构造函数创建),或传递 null 值。 | |
colorTransform:flash.geom:ColorTransform (default = null ) — 一个 ColorTransform 对象,用于调整位图的颜色值。如果没有提供任何对象,则不会转换位图图像的颜色。如果必须传递此参数但又不想转换图像,请将此参数设置为使用默认 new ColorTransform() 构造函数创建的 ColorTransform 对象。 | |
blendMode:String (default = null ) — 来自 flash.display.BlendMode 类的一个字符串值,指定要应用于所生成位图的混合模式。 | |
clipRect:Rectangle (default = null ) — 一个 Rectangle 对象,定义要绘制的源对象的区域。 如果不提供此值,则不会进行剪裁,并且将绘制整个源对象。 | |
smoothing:Boolean (default = false ) — 一个布尔值,用于确定因在 matrix 参数中指定缩放或旋转而对 BitmapData 对象进行缩放或旋转以后,是否对该对象进行平滑处理。smoothing 参数只有在 source 参数是 BitmapData 对象时才适用。在将 smoothing 设置为 false 的情况下,经过旋转或缩放的 BitmapData 图像可能会显得像素化或带有锯齿。 在将 |
上述信息来源于官网。这是一个很有意思的函数,在Flash中它可以将一些特殊的“图像”转换成BitmapData,常见的带有图像信息有图型、元件、形状等等都可以作为draw的第一个参数。本次重点论述第二个参数Matrix
。
Matrix
用于对第一个参数进行旋转、平移、缩放。当你默认为NULL时,它不会改变图像的任何信息。但对元件来说有点问题,如果元件的对齐方式不是左上角的话,draw的时候大概只能绘制原图的四分之一(居中对齐时是右下),想要绘制全部的,你必须使用Matrix
的translate函数来移动位置。如下图,对齐方式一共9个点。
构造:public function Matrix(a:Number = 1, b:Number = 0, c:Number = 0, d:Number = 1, tx:Number = 0, ty:Number = 0)
a:Number (default = 1 ) — 缩放或旋转图像时影响像素沿 x 轴定位的值。 | |
b:Number (default = 0 ) — 旋转或倾斜图像时影响像素沿 y 轴定位的值。 | |
c:Number (default = 0 ) — 旋转或倾斜图像时影响像素沿 x 轴定位的值。 | |
d:Number (default = 1 ) — 缩放或旋转图像时影响像素沿 y 轴定位的值。 | |
tx:Number (default = 0 ) — 沿 x 轴平移每个点的距离。也就是原坐标加上tx | |
ty:Number (default = 0 ) — 沿 y 轴平移每个点的距离。也就是原坐标加上ty |
一般很少用到上面的参数,绝大部分都是用三个变换函数,简洁明了。三个函数调用的先后顺序也对最终的结果影响,因此一般的顺序是,旋转、平移、缩放。(函数调用的先后顺序不同必定影响最终的结果)
旋转:rotate(q);q:弧度制。一般情况下,是绕着IBitmapDrawable的(x,y)来旋转
平移:translate(tx, ty);tx,ty要移动的像素,正负为方向
缩放:scale(sx, sy);sx, sy缩放比例,可以为负数,负数表示翻转,sx为负表示水平翻转,sy为负表示竖直翻转