Вопрос

У меня есть два объекта битмапдата с альфа-каналами. Я хотел бы объединить их в один, используя max (channel_image_one, channel_image_two) для каждого канала, включая альфа. Есть ли простой способ добиться этого результата?

Это было полезно?

Решение

Я не думаю, что есть прямой метод Bitmapdata, чтобы объединить альфа-шанель таким образом. RGB может быть сделано с помощью Draw (), применяя режим смеси, но я не думаю, что это будет работать, если вам нужен строгий Макс на Чанель).

Кроме того, вы можете создать шейдер благодаря Pixelbender. выполнить эту задачу. Это идеальный инструмент для такого рода манипуляций.

Медленнее в производительности, но быстрее настроить, если вы не использовались в PB, вы можете просто повторить / сравнить / пиксели один за другим с Bitmapdata.getPixel32 () / setpixel32 (). Если вы идете на это, подумайте об использовании Bitmapdata.lock () / unlock (), чтобы повысить производительность.

Другие советы

Если вы хотите MAX (Image_One, Image_TWO), которые должны быть эквивалентны Освещать режим смешивания.

Вот фрагмент от Фонд ActionScript 3.0 Эффекты изображения :

public function lighten(topPixel:uint, bottomPixel:uint):uint{
   return Math.max(topPixel,bottomPixel);
}

Вы можете получить необходимые в качестве файлов из главы 2 папки Источник Zip..

Используйте совет Тео с

  • замок()
  • для петлей
  • разблокировать ()

Для скорости с битмапдатами или используйте Pixelbender. Видимо по отношению к Амантик, более 90% пользователя Flash Player уже используют версию 10.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top