如何在BitmapData上绘制字符串

时间:2010-08-08 18:34:04

标签: actionscript-3

如何在BitmapData上绘制字符串,是否有类似Java的Graphics.drawString()?

2 个答案:

答案 0 :(得分:8)

在Actionscript中,我认为最自然的处理方式是使用Sprite之类的容器,并使用它的graphics对象和/或添加其他显示对象作为子对象。然后,您可以在必要时拍摄“快照”,以获取像素数据。

要添加文字,创建TextField是最简单的选择。

无论如何,如果你愿意,你可以在现有的BitmapData上编写一个小函数。这是一个如何编写这样一个函数的草图:

function drawString(target:BitmapData,text:String,x:Number,y:Number):void {
    var tf:TextField = new TextField();
    tf.text = text; 
    var bmd:BitmapData = new BitmapData(tf.width,tf.height);
    bmd.draw(tf);
    var mat:Matrix = new Matrix();
    mat.translate(x,y);
    target.draw(bmd,mat);
    bmd.dispose();
}

// use
var bitmap:BitmapData = new BitmapData(400,400);
// let's draw something first (whatever is on the stage at this point)
bitmap.draw(stage);
drawString(bitmap,"testing",100,50);
// display the result...
addChild(new Bitmap(bitmap));

答案 1 :(得分:1)

您可以在位图中绘制TextField

import flash.text.TextField;
import flash.display.BitmapData;
import flash.display.Bitmap;

var tf:TextField=new TextField();
tf.text="Hello world";
var bd:BitmapData=new BitmapData(200,200, false,0x00ff00);
bd.draw(tf);
var bm:Bitmap=new Bitmap(bd);
addChild(bm);