从SVG Path到Java AWT的{ArcTo

时间:2017-05-30 15:14:57

标签: java math svg path awt

我被一些数学困在Java awt开发中。

我需要将SVG的Path命令放入awt的路径中。一切都运行良好,但后来我遇到了ArcTo命令,我仍然无法做到正确。

AWT的ArcTo命令需要包含Arc的Rectangle的x和y坐标,宽度和高度,angleStart,弧的角度范围以及arc-ending的类型(不相关)。

new Arc2D.Double(x, y, w, h, start, extent, type);

SVG的ArcTo命令就是这样。 Svg给出弧的X和Y半径,一个旋转,两个布尔(标志)和一个targetPoint。这两个标志用于在其他参数留下的四种弧形可能性之间进行选择。 This link shows nicely how it's done

A rx ry x-axis-rotation large-arc-flag sweep-flag x y

JavaFX的ArcTo Command几乎没有那样,

new ArcTo(radiusX, radiusY, xAxisRotation, arcExtent, arcY, largeArcFlag, sweepFlag);

我的数学不足以在这两个构造函数之间进行这样的转换。我会继续我的研究,但我现在真的失去了,我真的需要你的帮助!

1 个答案:

答案 0 :(得分:0)

我使用蜡染SVG libray来实现SVG图形。您可以使用蜡染的ExtendedGeneralPath,它具有arcTo()方法,该方法具有与SVG path命令完全相同的参数,并且顺序相同。例如,当您绘制路径XX时,以下内容会给我一个心形:

    ExtendedGeneralPath XX = new ExtendedGeneralPath();

    XX.moveTo(10, 30);
    XX.arcTo(20, 20, 0, false, true, 50, 30);
    XX.arcTo(20, 20, 0, false, true, 90, 30);
    XX.quadTo(90, 60, 50, 90);
    XX.quadTo(10, 60, 10, 30);
    XX.closePath();