代码之家  ›  专栏  ›  技术社区  ›  Jarek

如何在BitmapData上绘制字符串

  •  6
  • Jarek  · 技术社区  · 15 年前

    如何在BITMAPATDATA上绘制字符串,有什么类似Java的图形?

    2 回复  |  直到 15 年前
        1
  •  8
  •   Juan Pablo Califano    15 年前

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

    用于添加文本,创建 TextField 是最简单的选择。

    无论如何,如果需要的话,您可以在现有的位图数据上编写一个执行此操作的小函数。下面是如何编写这样一个函数的示意图:

    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));
    
        2
  •  1
  •   Patrick    15 年前

    你可以画一个 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);