Java AWT - 用平滑曲线连接的多边形绘制

5
我在这里提出更多关于图形的愚蠢问题。希望不久之后我能离开图形世界,坚定地站在毫无色彩的中间层。我对那些能够通过代码以令人愉悦的方式玩弄图像的人有了新的敬意。
话虽如此,我现在正在画一个多边形在画布上。它可以由任意数量的点组成,但现在我们假设为12个点。当前实现的多边形是通过直线从一个点连接到另一个点。我想应用某种变换,使得形状更“自然”一些,就好像有人用笔/铅笔连接这些点。
我不确定这是否是过于模糊的描述。我认为我正在寻找的是贝塞尔曲线,但我对图形(和几何)一窍不通。总体上,我对新颖的解决方案很感兴趣,只要能让有直边的多边形看起来更像一团墨水。也许还需要控制,以实现更或少“自然”的形状。
如果您需要任何其他信息,请不要犹豫与我联系。
谢谢, Matt

如果AWT / Swing具有内置的Bezier曲线绘制功能(我不知道它是否有),那么您可以这样做。但是,我的第一个想法是只需“圆角”,我认为您可以使用Graphics对象自己解决这个问题。您只需要将直线和小弧线组合在一起连接即可。 - Tyler
我觉得我无法过分强调我的图形设计无能。现在我让AWT来完成所有的工作。 :) - Matt
当我夸大了我的无能时,我发现我必须依赖于特别强调的术语,通常是粗俗的。希望这有所帮助。 - Steven Sudit
2个回答

5
要开始操作:
* 创建一个GeneralPath
* 使用GeneralPath.curveTo(float x1, float y1, float x2, float y2, float x3, float y3)向路径中添加曲线
* 获取一个Graphics2D对象
* 使用Graphics2D.draw(Shape s)方法绘制GeneralPath(它是一个形状)

可选的,你可以设置线条端点和连接方式:
* 创建一个BasicStroke(width=1, cap=CAP_ROUND , join=JOIN_ROUND )
* 使用Graphics2D.setStroke方法设置笔画

唯一困难的部分就是要找出curveTo方法中x3,y3的值。


1

使用J2SE JVM,您可以将任何图形对象转换为Graphics2D对象,然后使用它来绘制贝塞尔曲线。

在此处查看示例


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接