+ -
当前位置:首页 → 问答吧 → 关于 BitmapData.draw 方法的疑问

关于 BitmapData.draw 方法的疑问

时间:2008-11-20

来源:互联网

在用  BitmapData.draw 方法时用到下面的代码
复制内容到剪贴板
代码:
var tempRectangle:Rectangle = new Rectangle(39, 99, 135, 135); // 我想截取图片起点(39, 99),宽135,高135的区域
var myBitmapData:BitmapData = new BitmapData(135, 135); // 声明宽为135高为135的bitmapdata
myBitmapData.draw(tf,null, null, null, tempRectangle); // 把要截取的图片区域画到bitmapdata中
var bmp:Bitmap = new Bitmap(myBitmapData);
this.addChild(bmp);
// 问题只出来一点点图片,而不是想要的 起点(39, 99),宽135,高135的区域
有网友说 draw是复制源对象的全部,我对此有点不是很确信,希望了解的人给些指点,附件中有简单的例子能更好的说明问题,谢谢!

附件

draw.rar (35.86 KB)

2008-11-20 18:16, 下载次数: 17

作者: kalipusi   发布时间: 2008-11-20

那你还想得到哪一块的,看了你的文件一点问题没有啊。
你不会是以为设置Rectangle的起点可以移动图片吧。这个只是相当于一个遮罩区域的效果。位置也是相对于你的图片的位置。就是说从图的39,99开始。

作者: iammutex   发布时间: 2008-11-20

var tempRectangle:Rectangle = new Rectangle(39, 99, 135, 135); // 我想截取图片起点(39, 99),宽135,高135的区域

var myBitmapData:BitmapData = new BitmapData(135, 135); // 声明宽为135高为135的bitmapdata
myBitmapData.draw(tf, new Matrix(1,0,0,1,-39,-99)); //将bitmapData的注册点放在截图的起点39,99
myBitmapData.draw(myBitmapData,null, null, null, tempRectangle); // 把要截取的图片区域画到bitmapdata中

var bmp:Bitmap = new Bitmap(myBitmapData);
this.addChild(bmp);

作者: guissy   发布时间: 2008-11-20

var _MapData:BitmapData = new BitmapData(tf.width, tf.height);
_MapData.draw(tf);

var tempRectangle:Rectangle = new Rectangle(39, 99, 135, 135);
var tPoint:Point = new Point(0, 0);//tPoint为在myBitmapData中的位置

var myBitmapData:BitmapData = new BitmapData(135, 135);
myBitmapData.copyPixels(_MapData, tempRectangle, tPoint);//在_MapData中拷贝tempRectangle区域像素并放在myBitmapData中的tPoint位置
var bmp:Bitmap = new Bitmap(myBitmapData);
this.addChild(bmp);

作者: hyf1984   发布时间: 2008-11-21

谢谢 iammutex, 让我意识到我对Rectangle理解的错误。

谢谢 guissy &&  hyf1984 提供了两种方法,是我想要的

作者: kalipusi   发布时间: 2008-11-21

hyf1984 的方法针对负坐标的区域无效吧。

作者: tainqinhot   发布时间: 2011-06-09