[Flash][AS3]BitmapData的draw函数详解

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 图像可能会显得像素化或带有锯齿。

在将 smoothing 设置为 true 的情况下绘制位图要比在将 smoothing 设置为 false 的情况下执行相同操作更为缓慢。

        上述信息来源于官网。这是一个很有意思的函数,在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为负表示竖直翻转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值