#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
класс).