2011-12-09 20 views
1

但是,我较少使用位图类。但是注意到这两个类(Bitmap和BitmapData)的存在让我想到了......为什么BitmapData可以简单地变成Bitmap.getData或Bitmap.data?为什么BitmapData被简单地分类为Bitmap.data?

任何线索?

由于 Vishwas

+0

由于位图是DisplayObject,BitmapData是编码图像,所以即使您加载.jpg,也必须对其进行分析。如果您想创建少量位图,则可以将其固定到每个相同的BitmapData。更多 - 在BitmapData中您可以对像素进行操作,您将如何在ByteArray上执行此操作? – turbosqel

回答

3

BitmapBitmapData的视觉表示。它从DisplayObject继承这意味着它具有用于定位,如xy和大小以及其他的东西,如widthheight性能。

BitmapData持有大量的属性和方法的严格相关的图像的表示,而不是可见图像本身。如果有的话,在实际渲染它所代表的内容之前,你可以使用BitmapData。合并这两个类是没有意义的。原因如下:

  1. 多个Bitmap实例可以引用一个BitmapData实例,节省大量内存并提高性能。在我的游戏引擎中,DisplayList中只有一个位图实例,但所有游戏实体都有自己的引用BitmapData,它将作为视觉效果。
  2. 我不想创建一个完整的Bitmap实例(很大)只是为了使用它的BitmapData。只需要一个明显轻量级的课程来完成您需要的工作就显得更有意义。
  3. 位图的单个实例可以从无限量的BitmapData实例中获取部分信息,然后渲染它们。考虑到这一点,Bitmap和BitmapData似乎不是一个类,因为从OOP的角度来看,这个类只应该代表一个图形。
  4. 他们只是不一样的东西。他们可以没有彼此工作,并有这样做的实际和常见用途。

还有更多的原因,但这些仅仅是少数。

+0

+1很好的答案! – Peter

+0

你为什么不接受编辑?仅供参考,正确使用*号*和*金额*是我的宠儿之一;)http://www.writing.com/main/books/entry_id/318060 – Peter

+0

@Peter我无法接受我的手机上的编辑。也有趣的文章.. – Marty

1

BitmapData是图像数据的核心表示;每个像素4个通道:alpha,红色,绿色和蓝色。使用这个,你可以操纵每个像素。

Bitmap类是DisplayObject的子类,它用于呈现显示列表中的位图数据。

相关问题