在Flex中的BitmapData上绘制文本
嗯,问题可能很简单,但我无法弄清楚。我有一个图像加载到BitmapData。现在我想从文本输入中获取文本并将其放在BitmapData上。基本上它是在BitmapData上绘制文本,并将结果作为另一个BitmapData获取,该BitmapData将包含原始BitmapData,并在指定位置上绘制文本。在flex中实现这一点的最佳方式是什么?在Flex中的BitmapData上绘制文本
为了把一个位图中的文本,你可以这样做:
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);
谢谢,它的工作原理。但是,无论我做什么,文本都会出现在Bitamp图像的左上角(0,0),如何让它出现在我想要的Bitmapdata图像上? – redGREENblue 2011-05-23 19:57:55
您可以使用矩阵和翻译方法: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下)。
听起来不错。不过,我对这种方法的要求可能存在问题(但我不确定)。 BitmapData具有较大的尺寸,当我将其加载到图像中时,它会缩小以适应图像尺寸。如果我将此位图转换为BitmapData并保存它不是图像的维度(即按比例缩小的图像),那么在这种情况下如何保留原始维度? – redGREENblue 2011-05-20 21:11:11
您尝试添加图像控件但未设置控件的宽度和高度吗? – michael 2011-05-20 23:42:01
是的。但这里的问题是运行时加载不同映像的应用程序要求。因此,某些图像可能具有较高的分辨率,需要按比例缩小以适合图像区域,但保存图像时应将其保存在原始尺寸中。如果我没有设置图像的宽度/高度,如果我能够正确解释它,则更高尺寸的图像将在显示区域内耗尽。我可以使用哪种解决方法? – redGREENblue 2011-05-21 18:01:57
你们是不是去水印/修改原始图像本身或只是显示在你的应用程序中的图像上一些文字? – 2011-05-20 20:34:00
不完全水印。我只想将文本添加到BitmapData上,并将其保存为全新的图像(包括图像和文本)。所以是的,通过添加文本来修改原始图像。 – redGREENblue 2011-05-20 20:38:47