Создать гибкое изображение из скрытого компонента - PullRequest
0 голосов
/ 20 января 2010

Я пытаюсь поместить изображение, сгенерированное из некоторого текста, в RichEditableText . Поскольку это стилизованный текст, я подумал над тем, чтобы поместить его в другой RichEditableText, стилизовать его, а затем распечатать в Bitmap , чтобы использовать в качестве источника для InlineGraphicsElement.

Я использую следующий код для этого

var txt:RichEditableText = new RichEditableText();
txt.text = name;
// Appliy given styles to the text flow of input rich editable text
createApplyNamedStyle(name, styles).call(null, txt.textFlow);
var bitmapData:BitmapData = new BitmapData(txt.width, txt.height);
bitmapData.draw(txt);
var bitmap:Bitmap = new Bitmap(bitmapData);

К сожалению, при вызове он отображает стек ошибок

ArgumentError: Error #2015: BitmapData non valide.
at flash.display::BitmapData()
at RichTextEditor/getTagImage()[E:\FlexWorkspace\Test\src\RichTextEditor.mxml:74]
at RichTextEditor/insertTag()[E:\FlexWorkspace\Test\src\RichTextEditor.mxml:154]

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

И я делаю правильные вещи, чтобы преобразовать мой текст в изображение?

Ответы [ 2 ]

1 голос
/ 20 января 2010

Ты прав; поскольку текст отсутствует в списке отображения, он никогда не проверяется и поэтому имеет 0 высоту и ширину.

Типичный обходной путь - добавить элемент в список отображения и сразу же удалить его. Немного больше обсуждения в этом ТАКОМ вопросе .

0 голосов
/ 20 января 2010

Вы должны отследить txt.width и txt.height.Они должны быть как минимум больше или равны единице.Неважно, является ли объект DisplayObject видимым или нет.

...