如何在Java中绘制绝对自定义的形状



Java2D API支持的最复杂的形状是贝塞尔段。假设我想绘制有理段(每个控制点都有一个权重,整个渲染公式略有不同)。

如何做到这一点?

是否可以扩展渲染引擎以能够绘制更复杂的形状?

更新

实现

自定义形状的常用方法是实现Shape接口。此接口具有在迭代段类型时返回PathIterator的关键方法PathIterator。只有 5 种段类型。其中曲线最陡峭的是SEG_CUBICTO,这是标准贝塞尔曲线,有4个控制点(包括2个起点和终点)。

如果我对贝塞尔曲线

应用线性分数变换,每个控制点都会得到一个权重,作为其坐标的补充,贝塞尔曲线转向 NURBS(不确定,未能学习确切的术语)。无论如何,曲线的公式与贝塞尔不同。

您无法真正扩展渲染引擎:您可以创建 Graphics/Graphics2D 子类,但您无法控制实例化,因此您无法强制绘图框架将您的子类传递给绘制方法。

您可以做的是创建一个 Shape 的 RationalShape 实现,该实现具有绘制您喜欢的任何内容的方法,并返回一个 PathIterator,该路径使用贝塞尔样条近它。作为像Photoshop这样的图形程序的用户,我发现每条曲线都可以用贝塞尔样条很好地近似,我不知道这种近似背后的数学会有多复杂。

相关内容

  • 没有找到相关文章

最新更新