Прозрачный текст на растровом изображении

Я использую следующий код для рисования текста из текстового ввода на растровом изображении. Он отлично работает, за исключением проблемы, заключающейся в том, что вместо того, чтобы рисовать только текст, он рисует текст внутри поля с белым фоном. Как я могу нарисовать только текст без поля? Я догадался, что это связано с прозрачностью, поэтому я установил прозрачность Bitmapdata, но это все равно не работает.

                        var m:Matrix = new Matrix();
            m.tx=100;
            m.ty=100;

            var txtMatrix:Matrix= new Matrix();
            txtMatrix.tx=bmd.width;
            txtMatrix.ty=bmd.height+50;


            original= new BitmapData(bmd.width+200,bmd.height+400,true,0x00000000);
            original.draw(bmpMy,m);


            var txtMatrix:Matrix= new Matrix();
            txtMatrix.tx=100;
            txtMatrix.ty=bmd.height+105;
            original.draw(txtTitle1,txtMatrix);   

Примечание. Bmd BitmapData, передаваемый «оригиналу», также прозрачен. bmpMy — это растровое изображение из bmd BitmapData.


person redGREENblue    schedule 05.06.2011    source источник
comment
Что такое «txtTitle1»? Строка? Текстовый ввод? мх или спарк? У него есть кожа?   -  person RIAstar    schedule 05.06.2011
comment
Ввод текста. Определяется как: ‹s:TextInput x=512 y=170,75 ширина=378 id=txtTitle1›   -  person redGREENblue    schedule 05.06.2011
comment
Вы уверены, что компонент инициализирован? Просто используйте стандартное текстовое поле.   -  person ansiart    schedule 06.06.2011


Ответы (1)


Вы рисуете весь свой компонент TextInput с TextInputSkin по умолчанию. Так как этот скин имеет рамку и белый фон, то они тоже будут прорисовываться.

Я вижу 2 возможных решения:

  1. либо создайте обычное текстовое поле ActionScript, скопируйте текст из TextInput в TextField и нарисуйте это TextField. После рисования вы можете избавиться от TextField.

or

  1. Создайте собственный класс темы оформления для TextInput без рамки и с прозрачным фоном. Возможно, вам придется изменить скин во время выполнения. Вы можете сделать это следующим образом:

.

txtTitle.setStyle("skinClass", MyCustomTextInputSkin);

Когда вы закончите рисовать, восстановите скин по умолчанию:

txtTitle.setStyle("skinClass", TextInputSkin);
person RIAstar    schedule 05.06.2011