如何使用Matrix对bitmap的旋转与镜像水平垂直翻转
展开全部
s.addChild(image);//旋转就旋转这个s
============
这个是注册点的问题,在flash程序里面,显示对象缩放、旋转都是基于注册点,flash里面不可以直接修改注册点的位置,我们可以换一个思路解决问题。
flash里面是基于显示对象的,旋转一个容器,容器里面的子对象会跟随父容器旋转,位图导入之后注册点的位置是位于右上角,你可以new一个sprite对象sp,然后将bitmap添加到sp对象里面,去设置bitmap的位置,然后旋转sp就行了
var sp:sprite=new Sprite()
addChild(sp)
sp.addChild(bitmap)
bitmap.x=-bitmap.width/2
bitmap.y=-bitmap.height/2
这样旋转sp对象就相当于bitmap绕着中心旋转
=============
呵呵,当然也能使用Matrix实现绕任意点旋转,
import flash.display.Bitmap;
import flash.display.DisplayObject;
import flash.geom.Matrix;
var bitmap:Bitmap = new Bitmap(new Bitmap1());
bitmap.x = 262-bitmap.width/2;
bitmap.y = 146-bitmap.height/2;
addChildAt(bitmap, 0);
var matrix:Matrix = bitmap.transform.matrix;
// 注意旋转要相对于最初的matrix, 否则效果将跟你想的不一致。
rotate(bitmap, 30, bitmap.width/2, bitmap.height/2, matrix);
function rotate(dis:DisplayObject, rotation:int, px:int, py:int, original:Matrix):void{var tx:int = dis.x + px;
var ty:int = dis.y + py;
var m:Matrix = original.clone();
m.translate(-tx, -ty);
m.rotate(rotation/180*Math.PI);
============
这个是注册点的问题,在flash程序里面,显示对象缩放、旋转都是基于注册点,flash里面不可以直接修改注册点的位置,我们可以换一个思路解决问题。
flash里面是基于显示对象的,旋转一个容器,容器里面的子对象会跟随父容器旋转,位图导入之后注册点的位置是位于右上角,你可以new一个sprite对象sp,然后将bitmap添加到sp对象里面,去设置bitmap的位置,然后旋转sp就行了
var sp:sprite=new Sprite()
addChild(sp)
sp.addChild(bitmap)
bitmap.x=-bitmap.width/2
bitmap.y=-bitmap.height/2
这样旋转sp对象就相当于bitmap绕着中心旋转
=============
呵呵,当然也能使用Matrix实现绕任意点旋转,
import flash.display.Bitmap;
import flash.display.DisplayObject;
import flash.geom.Matrix;
var bitmap:Bitmap = new Bitmap(new Bitmap1());
bitmap.x = 262-bitmap.width/2;
bitmap.y = 146-bitmap.height/2;
addChildAt(bitmap, 0);
var matrix:Matrix = bitmap.transform.matrix;
// 注意旋转要相对于最初的matrix, 否则效果将跟你想的不一致。
rotate(bitmap, 30, bitmap.width/2, bitmap.height/2, matrix);
function rotate(dis:DisplayObject, rotation:int, px:int, py:int, original:Matrix):void{var tx:int = dis.x + px;
var ty:int = dis.y + py;
var m:Matrix = original.clone();
m.translate(-tx, -ty);
m.rotate(rotation/180*Math.PI);
2016-07-30 · 知道合伙人数码行家
关注
展开全部
Bitmap newb = Bitmap.createBitmap(ww, wh, Config.ARGB_8888);// 创建一个新的和SRC长度宽度一样的位图
Canvas cv = new Canvas(newb);
Matrix m = new Matrix();
m.postScale(1, -1); //镜像垂直翻转
m.postScale(-1, 1); //镜像水平翻转
m.postRotate(-90); //旋转-90度
Bitmap new2 = Bitmap.createBitmap(a, 0, 0, w, h, m, true);
Canvas cv = new Canvas(newb);
Matrix m = new Matrix();
m.postScale(1, -1); //镜像垂直翻转
m.postScale(-1, 1); //镜像水平翻转
m.postRotate(-90); //旋转-90度
Bitmap new2 = Bitmap.createBitmap(a, 0, 0, w, h, m, true);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询