2011-05-20 107 views
1

嗯,問題可能很簡單,但我無法弄清楚。我有一個圖像加載到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

回答

4

爲了把一個位圖中的文本,你可以這樣做:

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

0

你不能在每個說法上畫出位圖數據,但是你可以從數據中編寫它。由於您擁有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