Почему BitmapData классифицируется просто как Bitmap.data? - PullRequest
1 голос
/ 09 декабря 2011

Однако я реже использую растровые классы.Но когда я замечаю существование этих двух классов (Bitmap и BitmapData), меня удивляет ... почему BitmapData может быть просто Bitmap.getData или Bitmap.data?

Есть подсказка?

Спасибо, Вишвас

Ответы [ 2 ]

3 голосов
/ 09 декабря 2011

Bitmap является визуальным представлением BitmapData.Он наследует от DisplayObject, что означает, что он имеет свойства для позиционирования, такие как x и y и для размера, такого как width и height, среди прочего.

BitmapData содержит большойколичество свойств и методов, строго связанных с представлением изображения, а не самого видимого изображения.Вы можете много поработать с BitmapData, прежде чем фактически отобразить то, что оно представляет, если оно вообще есть.Не имеет смысла объединять два класса.Вот несколько причин:

  1. Несколько экземпляров Bitmap могут ссылаться на один экземпляр BitmapData, экономя много памяти и повышая производительность.В моем игровом движке есть только один экземпляр Bitmap в DisplayList, но все игровые объекты имеют свою собственную ссылку на фрагмент BitmapData, который будет действовать как его визуальный элемент.
  2. Я не хочунеобходимо создать целый экземпляр Bitmap (который является большим) только для работы с его BitmapData.Гораздо более разумно просто иметь значительно более легкий весовой класс, выполняющий нужную вам работу.
  3. Один экземпляр Bitmap может извлекать информацию о порциях из неограниченного количества экземпляров BitmapData и затем отображать их.Не кажется логичным, что Bitmap и BitmapData представляют собой один класс с учетом этого, поскольку с точки зрения ООП может показаться, что этот единственный класс должен представлять только один графический объект.
  4. Они просто не являютсятоже самое.Они могут работать друг без друга и имеют для этого практическое и общее использование.

Есть много других причин, но это только несколько.

1 голос
/ 09 декабря 2011

BitmapData - базовое представление данных изображения; 4 канала в изображении на пиксель: альфа, красный, зеленый и синий. Используя это, вы можете манипулировать каждым пикселем.

Класс Bitmap является подклассом DisplayObject, это то, что используется для визуализации растровых данных в списке отображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...