首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > PowerDesigner >

[转]Bit地图Data旋转有关问题

2012-12-19 
[转]BitmapData旋转问题http://bbs.9ria.com/viewthread.php?tid73912&extrapage%3D1%26amporderby%3Dd

[转]BitmapData旋转问题
http://bbs.9ria.com/viewthread.php?tid=73912&extra=page%3D1%26amp;orderby%3Ddateline%26amp;filter%3D2592000

通过Loader加载一个图片,然后利用BitmapData对图片旋转90°(不用嵌套sprite方法,因为之后还要对旋转后的图片进行抠图),但是用我的代码最后得出的图像有问题(pic.source=bitmap用来检验输出的图片),这个问题困扰很久了,有没有人帮忙看下.谢谢了

var bData:BitmapData = new BitmapData(loader.width,loader.height);var m:Matrix = bitmap.transform.matrix;var centerX:Number = loader.width / 2;var centerY:Number = loader.height / 2;var centerPoint:Point         = new Point(centerX, centerY);var transformPoint:Point = m.transformPoint(centerPoint);m.translate(-transformPoint.x, -transformPoint.y);m.rotate(90*(Math.PI/180));m.translate(transformPoint.x, transformPoint.y);bData.draw(bitmap,m);//bitmap = Bitmap(loader.content);//bitmap = new Bitmap(bData);//pic.source = bitmap;



莫非又是跨域。因为我觉得,使用了Loader的图片,不旋转没事,一转就有问题,就说明你draw了不该draw的东西。



应该是被转晕了,所以才少了。
var loader:Loader=new Loader();this.stage.invalidate();this.stage.addEventListener(Event.RENDER, onRender);function onRender(event:Event):void{    loader.load(new URLRequest("1.png"));    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);}function onComplete(event:Event):void{    trace("加载成功了");    var bitmap:Bitmap = loader.content as Bitmap;//原图    var bData:BitmapData = new BitmapData(loader.width,loader.height);//缓存    var m:Matrix = bitmap.transform.matrix;    var centerX:Number = loader.width / 2;    var centerY:Number = loader.height / 2;    m.translate(-centerX, -centerY);//注册点在中心    m.rotate(90*(Math.PI/180));//旋转90度    m.translate(centerY, centerX);//注册点恢复到左上,关键是这里,转晕了吧    bData.draw(bitmap,m);    bitmap.bitmapData=bData;    addChild(bitmap);}



后来发现其实不用draw,因为draw来draw去,cpu比较累。还是设置下matrix比较省。

var loader:Loader=new Loader();this.stage.invalidate();this.stage.addEventListener(Event.RENDER, onRender);function onRender(event:Event):void{        loader.load(new URLRequest("1.png"));        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);}function onComplete(event:Event):void{        trace("加载成功了");        var bitmap:Bitmap = loader.content as Bitmap;//原图        switch (-180)        {                case 90 :                        bitmap.transform.matrix = new Matrix(Math.cos(Math.PI/2),Math.sin(Math.PI/2), -Math.sin(Math.PI/2),Math.cos(Math.PI/2),loader.height);                        break;                case -90 :                        bitmap.transform.matrix = new Matrix(Math.cos(-Math.PI/2),Math.sin(-Math.PI/2), -Math.sin(-Math.PI/2),Math.cos(-Math.PI/2),0,loader.width);                        break;                case 180 :                case -180 :                        bitmap.transform.matrix = new Matrix(Math.cos(Math.PI),Math.sin(Math.PI), -Math.sin(Math.PI),Math.cos(Math.PI),loader.width,loader.height);                        break;        }        addChild(bitmap);}

热点排行