0

我正在尝试将由某些文本生成的图像放在RichEditableText中。因为它是一个样式化的文本,所以我想把它放在另一个 RichEditableText 上,设置它的样式,然后将它打印到一个位图以用作 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(不在可见组件中)没有布置。我怎样才能确保它的布局正确?

我是否正在做正确的事情将我的文字转换成图像?

4

2 回答 2

1

你是对的; 由于文本不在显示列表中,因此它从未经过验证,因此高度和宽度为 0。

一个典型的解决方法是将项目添加到显示列表,然后立即将其删除。在这个 SO question中进行更多讨论。

于 2010-01-20T19:12:46.927 回答
0

您应该跟踪 txt.width 和 txt.height。它们必须至少大于或等于一。DisplayObject 是否可见并不重要。

于 2010-01-20T16:33:48.940 回答