从隐藏的组件生成弹性图像

时间:2010-01-20 16:31:22

标签: flex flex4 capture

我正在尝试将一些文字生成的图片放在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 个答案:

答案 0 :(得分:1)

你是对的;因为文本不在显示列表中,所以它永远不会被验证,因此具有0高度和宽度。

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

答案 1 :(得分:0)

你应该追踪txt.width和txt.height。它们必须至少大于或等于1。 DisplayObject是否可见无关紧要。