bitmapData.draw()遇到的小问题以及解决方法

问题:今天接收到美术的资源,fla里的元件对齐方式都是在中间,如图 :

先把2个用到的类摘下来:

Bitmap(bitmapData:BitmapData = null, pixelSnapping:String = "auto", smoothing:Boolean = false)

pixelSnapping:控制Bitmap对象是否贴紧最近的像素

smoothing:控制是否对位图进行缩放时平滑化

BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)

transparent:位图图像是否支持每个像素具有不同的透明度

fillColor:填充颜色


使用了下面的代码:item_就是这个元件啦!

var _bm:Bitmap = new Bitmap(new BitmapData(item_.width, item_.height, true, 0),"auto", true);
_bm.bitmapData.draw(item_);

可惜了此方法只绘画了部分,如图:

看了图片,小伙伴们都发现啦,draw():是从(0, 0)点开始绘画的,也就是元件的对齐点!


解决:目前我应用的2种方法

1.元件重新来一遍把,对齐方式是左上角,如图:

2.因为美术的资源太多的对齐点在中间,小弟只好选择用代码修改了,查看了下draw()的参数类型,第二个参数居然是矩阵!

小弟几个月前因为面试的关系还学习了几个小时的矩阵 ,上代码!

var _bm:Bitmap = new Bitmap(new BitmapData(item_.width, item_.height, true, 0), "auto", true);
var matrix:Matrix = new Matrix();
//原理应该是将中间对齐方式(0,0)的坐标平移了一半的宽和高,
matrix.tx = _item.width / 2;
matrix.ty = _item.height / 2;
_bm.bitmapData.draw(item_, matrix);


最后画出来的图就是完整的!


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值