Actionscript 3 — рисовать() с прозрачностью на растровом изображении

#flash #actionscript #transparency #bitmapdata

#flash #actionscript #прозрачность #bitmapdata

Вопрос:

Я хочу применить прозрачность к непрозрачному логотипу, а затем добавить его к изображению. Итак, я меняю альфа логотипа, затем я рисую () логотип на изображении. Но это не работает, прозрачность применяется не так, как ожидалось.

Примечание: позже я сохраню полученные растровые данные в файл, поэтому addChild() будет недостаточно для решения этой проблемы.

 var image:Bitmap;
var logo:Bitmap;
//...
logo.alpha = 0.3;
image.bitmapData.draw(logo);
  

Ответ №1:

попробуйте это:

 var adjustAlpha:ColorTransform = new ColorTransform();
adjustAlpha.alphaMultiplier = 0.3
var logoArea:Rectangle = new Rectangle(0, 0, logo.width, logo.height);
logo.bitmapData.colorTransform(logoArea, adjustAlpha);
image.bitmapData.draw(logo);
  

Когда вы изменяете альфа-значение растрового изображения, вы не изменяете его фактические растровые данные, так что при его рисовании вы по-прежнему копируете неизмененные данные, найденные в BitmapData.

Приведенный выше код использует свойство ColorTransform для настройки каждого пикселя в BitmapData, вы можете настроить таргетинг на определенные области, изменив размер прямоугольника.

(Вам также нужно будет импортировать ColorTransform класс).