ActionScript - 在actionscript中的形状中心绘制图像

时间:2011-10-20 10:47:55

标签: flash actionscript-3 actionscript graphics bitmapdata

我正在尝试在动作脚本中绘制图像,我将其设置为矩形内的BitmapFill。问题是,如果我将矩形移离原点(0,0),在我的情况下,我开始在(20,35)绘制矩形,位图背景不会跟随。背景始终绘制在(0,0)然后重复,所以我没有得到居中的图像,而是2个减半的图像。这是我的代码的样子:

public class PageTileRenderer extends VBox 
{
  private var sp:Shape;

  [Embed(source="../../../../assets/content.png")]
  private var contentIconClass:Class;
  private var contentIcon:Bitmap = new contentIconClass ();

  // ...

  private function drawIcon():void{
    sp.graphics.beginBitmapFill(contentIcon.bitmapData);
    sp.graphics.drawRect(20, 35, 13, 13);
    sp.graphics.endFill();
  }
}

所以我的问题是如何移动背景填充原点。或者是否有另一种解决方案来将图像居中。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您可以使用transformation matrix移动位图的原点。它可以作为参数传递给beginBitmapFill(使用现有代码):

private function drawIcon():void{
  var matrix:Matrix = new Matrix();
  matrix.translate(20, 35);
  sp.graphics.beginBitmapFill(contentIcon.bitmapData, matrix);
  sp.graphics.drawRect(20, 35, 13, 13);
  sp.graphics.endFill();
}

您还可以使用其他Matrix方法旋转和缩放位图填充。

答案 1 :(得分:0)

private function init():void
{
     loader = new Loader();
     loader.load(new URLRequest("benny.jpg"));
     loader.contentLoaderInfo.addEventListener(Event.COMPLETE, action);
}
private function action (e:Event)
{
    var bmpData:BitmapData = new BitmapData(180,220);
    bmpData.draw(e.target.content);
    var bmp:Bitmap = new Bitmap(bmpData);
    with(bg.graphics){
        beginFill(0xefefef,1);
        drawRoundRect(0,0,300,300,3,3);
        endFill();
    }
    addChild(bg);
    bg.x = stage.stageWidth/2-bg.width/2;
    bg.y = stage.stageHeight/2-bg.height/2;
    bg.addChild(bmp);
    bmp.x = bg.width/2-bmp.width/2;
    bmp.y = bg.height/2-bmp.height/2;
}