【问题标题】:How can I draw the control points of a Bézier Path in Java?如何在 Java 中绘制贝塞尔路径的控制点?
【发布时间】:2010-03-28 16:19:52
【问题描述】:

我创建了一条贝塞尔曲线的路径,它可以很好地绘制路径。但我不知道如何将控制点与路径一起绘制。这是可能的还是我必须在另一个数据结构中跟踪它们?

更新:我之所以要绘制控制点,是因为我会让用户使用控制点上的手柄来编辑曲线。

我正在创建路径:

Path2D.Double path = new Path2D.Double();
path.moveTo(0,0);
path.curveTo(5, 6, 23, 12, 45, 54);
path.curveTo(34, 23, 12, 34, 2, 3);

并用:

g2.draw(path);

我已经按照 trashgod 的建议使用 PathIterator 进行了测试,但是如果我希望用户能够编辑控制点,则很难以这种方式管理曲线.

【问题讨论】:

    标签: java drawing vector-graphics bezier java-2d


    【解决方案1】:

    您可以获得PathIterator 来引用Shape 中每个点的坐标数组。您可以使用它们在编辑时沿曲线绘制调整大小手柄和控制点。这是使用自定义曲线实现进行编辑的example

    【讨论】:

    • 您对 PathIterator 的看法是对的,但我想我会更改我的表示,因为我想让用户编辑曲线,并且仅使用路径表示将很难处理。
    • 为什么不同时保留:Path 以方便渲染和派生几何图形以进行编辑?添加或删除点时,您必须刷新后者。
    最近更新 更多