载入,创建与显示bitmaps

本文介绍了如何利用BitmapData的draw方法将现有显示对象的像素数据绘制到BitmapData实例中,包括参数详解及示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

嵌入与显示资源

从头开始创建bitmaps

在bitmaps中画现有的图形


除了Loading之外,另外一个创建图片的最简单方法是:把现有的显示对象的像素数据绘制成一个BitmapData。可以用BitmapData的draw()方法。


我们看看构造函数的每个参数:

  • source:绘制像素对象,无论是DisplayObject或者BitmapData,只要实现IBitmapDrawable接口。
  • matrix:矩阵实例被用来改变所绘像素的大小,位置,旋转角度
  • colorTransform:该颜色通道用来改变所绘制像素的颜色。
  • blendMode:混合模式,当它们把像素绘制到一个BitmapData实例上面,也就是叠加方式。
  • clipRect:范围。
  • smoothing:绘制的像索尺寸扩大时变得平滑。


指定源

 

构造函数中的第一个参数,source,就是你要拷贝像素数据的对象。可以使任何现是对象实例(Sprite,MovieClip,TextField,等等)或者是别的BitmapData实例,只要他们实现了IBitmapData接口。

当你调用draw()方法,源对象的像素数据就被画进BitmapData实例了,接着就断开了与源对象的联系。这意味着,无论你怎么搞愿对象,BitmapData的像素数据都不会改变。如果你呼叫这个方法而不指定其他参数(你可以看到,它们都是可选的)。源对象的像素数据只是被拷贝而没有任何颜色转换操作。我们可以通过一个例子来理解。

接下来的类可以在章节源文件中找到,文件名是DrawTest。这个类只是简单的测试一下draw()方法。重要部分用用粗体凸显。(记住,附录中有介绍如何创建项目和编译swf文件,如果不了解怎么创建SWF文件就去查看附录吧。这是最后一次提醒了。)


如果你编译并且测试这个影片,或者运行此章的文件中的SWF文件。你将看到一个圆,跟随着鼠标。该功能是从构造函数中调用createCirecle()方法。createBitmap(),也是在构造函数中调用的,这个方法创建一个BitmapData实例,一开始并没有被画入任何对象。芳儿,在构造BitmapData的时候,我设定了其像素数据的尺寸和舞台一样大小,像素能够透明,任何未定义的像素将完全透明(黑色,虽然在这个例子中这并不重要)。结果是,这个位图在最初的时候和舞台的大小相同,而且完全透明。如果你按任何键,onStageKeyDown() 方法就被激活了,如果被按下的键是空格,BitmapData实例上的draw()方法就被调用了。我只给舞台传递一个副本,它本身就是一个显示对象,被画进bitmap 数据中,接着就立即显示在舞台上了。随着不断单击空格键,就是有很多圆出现在舞台上,就像图片3-5一样。我们将整个舞台的像素都拷贝进了bitmap data。

3-5

总结draw()方法的参数

 

draw()方法有一个额外的参数,能够改变源对象的像素,就是合成算法。它允许你指定,将拷贝的像素叠加到目前的bitmap data上的方式。例如,如果你将BlendMode作为draw()的第四个参数。源对象的像素就会叠加到bitmap data的像素上,这个内容我们在前一个章节提到过。一个可能的用途就是创建笔刷,和Photoshop中的一样。这些刷子有混合选项就像层的混合模式一样,像MULTIPLY,这可以应用到你的填充中去。这种功能在ActionScript中调用draw()的时候经常使用,例如复制一个图像笔刷和指定一个特定的混合模式。

 

clipRect是draw()的第五个可选参数,这个允许你指定源对象的复制区域。如果这里没有指定,就是整体复制。但是如果你想获得更多的控制,你可以制定一个矩形区域作为clipRect参数传递进去。

 

draw()的最后一个参数是smoothing,这里指定像素源在缩放,旋转或者复制过程中是否平滑,以减少可能出现的锯齿。这可能会使计算变慢,但有时却是必不可少的。


拷贝现有的bitmap数据

结合绘图API一起使用bitmaps

清理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值