Dart SVG矩阵变换

时间:2014-07-27 17:28:34

标签: svg dart

我正在尝试创建一个类(在Dart中),使SVG组可以通过矩阵进行转换。我试图使用' setAttribute'路由,它适用于单个SvgElement:

转换类:

  String _x;
  Element _transformElement;

  void setX(int value)
  {
    _x = value.toString();
    _transformElement.setAttribute('x', _x);
  }

飞镖文件:

Transform test = new Transform('testObject');

void main()
{
  test.setX(25);
}

但是,我希望能够让所有的setter都通过一个矩阵运行。这是我的代码:

转换类:

Matrix _matrix;

void setX(int value) => setTransform(x: value);

void setTransform({int scaleX: null, int skewX: null, int skewY: null, int scaleY: null, int x: null, int y: null})
{
  _matrix.a = scaleX;
  _matrix.b = skewX;
  _matrix.c = skewY;
  _matrix.d = scaleY;
  _matrix.e = x;
  _matrix.f = y;

  _transformElement.setAttribute('width', _matrix.a.toString());
  _transformElement.setAttribute('height', _matrix.d.toString());
  _transformElement.setAttribute('x', _matrix.e.toString());
  _transformElement.setAttribute('y', _matrix.f.toString());
}

我的错误是_matrix为null。另外,我希望这适用于一组SVG对象,而不仅仅是一个SVGElement

1 个答案:

答案 0 :(得分:0)

您可以致电createSVGMatrix以获取可以操作的矩阵

如果您正在使用SVG文档,那么您可以这样调用它。

var matrix = document.documentElement.createSVGMatrix();

如果您的html文档中包含内联SVG,那么您需要获取根SVG元素并在其上调用createMatrix()。