关于 BitmapData.draw 方法的疑问
时间:2008-11-20
来源:互联网
在用 BitmapData.draw 方法时用到下面的代码
draw.rar (35.86 KB)
复制内容到剪贴板
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是复制源对象的全部,我对此有点不是很确信,希望了解的人给些指点,附件中有简单的例子能更好的说明问题,谢谢!
代码:
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的区域
附件

2008-11-20 18:16, 下载次数: 17
作者: kalipusi 发布时间: 2008-11-20
那你还想得到哪一块的,看了你的文件一点问题没有啊。
你不会是以为设置Rectangle的起点可以移动图片吧。这个只是相当于一个遮罩区域的效果。位置也是相对于你的图片的位置。就是说从图的39,99开始。
你不会是以为设置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);
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);
_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 提供了两种方法,是我想要的
谢谢 guissy && hyf1984 提供了两种方法,是我想要的
作者: kalipusi 发布时间: 2008-11-21
hyf1984 的方法针对负坐标的区域无效吧。
作者: tainqinhot 发布时间: 2011-06-09
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28