我正在尝试创建一个类(在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
答案 0 :(得分:0)
您可以致电createSVGMatrix以获取可以操作的矩阵
如果您正在使用SVG文档,那么您可以这样调用它。
var matrix = document.documentElement.createSVGMatrix();
如果您的html文档中包含内联SVG,那么您需要获取根SVG元素并在其上调用createMatrix()。