在Flex中的BitmapData上绘制文本

问题描述:

嗯,问题可能很简单,但我无法弄清楚。我有一个图像加载到BitmapData。现在我想从文本输入中获取文本并将其放在BitmapData上。基本上它是在BitmapData上绘制文本,并将结果作为另一个BitmapData获取,该BitmapData将包含原始BitmapData,并在指定位置上绘制文本。在flex中实现这一点的最佳方式是什么?在Flex中的BitmapData上绘制文本

+0

你们是不是去水印/修改原始图像本身或只是显示在你的应用程序中的图像上一些文字? – 2011-05-20 20:34:00

+0

不完全水印。我只想将文本添加到BitmapData上,并将其保存为全新的图像(包括图像和文本)。所以是的,通过添加文本来修改原始图像。 – redGREENblue 2011-05-20 20:38:47

为了把一个位图中的文本,你可以这样做:

var channelName:TextField = new TextField(); 
channelName.textColor=0x000000; 
channelName.antiAliasType = AntiAliasType.NORMAL; 
channelName.alpha=1.0; 
var txtFormat:TextFormat = new TextFormat("SansSerif",14,0x000000,true); 
channelName.setTextFormat(txtFormat); 

var bitmapdata:BitmapData = new BitmapData(
     channelName.width, channelName.height, true, 0x000000); 
bitmapdata.draw(channelName); 
+0

谢谢,它的工作原理。但是,无论我做什么,文本都会出现在Bitamp图像的左上角(0,0),如何让它出现在我想要的Bitmapdata图像上? – redGREENblue 2011-05-23 19:57:55

+0

您可以使用矩阵和翻译方法:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/geom/Matrix.html – alicia 2011-05-23 23:03:04

你不能在每个说法上画出位图数据,但是你可以从数据中编写它。由于您拥有BitmapData,因此将其更改为位图(var bitmap:Bitmap = new Bitmap(bitmapData);)很容易,然后将其添加为图像的源。

既然你在舞台上有一个实际的图像,你现在可以使用你喜欢的东西(文本,标签,textarea等)添加上面的文本,然后你可以在图像的尺寸上做一个Bitmap.draw像素信息返回到BitmapData(在Bitmap.bitmapData下)。

+0

听起来不错。不过,我对这种方法的要求可能存在问题(但我不确定)。 BitmapData具有较大的尺寸,当我将其加载到图像中时,它会缩小以适应图像尺寸。如果我将此位图转换为BitmapData并保存它不是图像的维度(即按比例缩小的图像),那么在这种情况下如何保留原始维度? – redGREENblue 2011-05-20 21:11:11

+0

您尝试添加图像控件但未设置控件的宽度和高度吗? – michael 2011-05-20 23:42:01

+0

是的。但这里的问题是运行时加载不同映像的应用程序要求。因此,某些图像可能具有较高的分辨率,需要按比例缩小以适合图像区域,但保存图像时应将其保存在原始尺寸中。如果我没有设置图像的宽度/高度,如果我能够正确解释它,则更高尺寸的图像将在显示区域内耗尽。我可以使用哪种解决方法? – redGREENblue 2011-05-21 18:01:57