我使用SVG Salamander在Java中显示和操作SVG图像。我设法改变元素的填充,描边或文本并显示更改。
现在我要旋转一个元素。所以我试图操纵转换矩阵:
SVGElement e = diagram.getElement("path4150");
System.out.println(e.getPresAbsolute("transform").getStringValue());
StyleAttribute t = e.getPresAbsolute("transform");
double[] d = t.getDoubleList();
d[0] = -0.39394618;
d[1] = -0.91913346;
d[2] = 0.91913357;
d[3] = -0.39394618;
d[4] = -429.42706;
d[5] = 1513.019;
t.setStringValue("matrix(" + Joiner.on(",").join(Doubles.asList(d)) + ")");
System.out.println(e.getPresAbsolute("transform").getStringValue());
diagram.render(graphics);
输出:
矩阵(0.87615346,0.48203226,-0.48203232,0.87615346,468.09264,-25.725313) 矩阵(-0.39394618,-0.91913346,0.91913357,-0.39394618,-429.42706,1513.019)
正如我在输出中看到的那样,矩阵被改变了。但是元素在图片中没有旋转。
答案 0 :(得分:1)
我刚开始学习这个 - 但SVGSalamander doc提到需要在被修改的元素(或者可能只是根元素?)的容器上调用updateTime(),以强制重绘。如果您不使用动画,那么任何值(0.0?)作为updateTime()的参数都会...