如何使用Matrix对bitmap的旋转与镜像水平垂直翻转

 我来答
霸7威武
2018-06-28 · 知道合伙人数码行家
霸7威武
知道合伙人数码行家
采纳数:59377 获赞数:97672
今年入校,就读汽车专业。

向TA提问 私信TA
展开全部
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);
用q户名
2016-07-30 · 知道合伙人数码行家
用q户名
知道合伙人数码行家
采纳数:56269 获赞数:150465
我最然懂的不多,但是我愿用全力来帮助大家。如果有不周到之处,还望大家海涵!

向TA提问 私信TA
展开全部
  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);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式