5

在这里,我要问更多愚蠢的图形问题。希望很快我能离开图形世界,再次坚定地站在无色中间层。我对那些能够通过代码以令人愉悦的方式摆弄图像的人有了新的尊重。

也就是说,我正在画布上绘制多边形。它可以有任意数量的点,但我们现在假设为 12。正如所实现的那样,多边形通过直线从点到点连接。我想应用某种类型的转换,以便更“自然”地绘制形状,就好像有人用钢笔/铅笔连接了这些点。

我不确定这是否过于模糊的描述。我认为我正在寻找的是贝塞尔曲线,但我是一个图形(和几何)松弛下巴。我一般对新颖的解决方案感兴趣,只是让直边多边形看起来更像一团墨水。也许通过控件来实现或多或少的“自然”形状。

如果您需要任何其他信息,请随时询问。

非常感谢,马特

4

2 回答 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

于 2010-08-16T00:19:23.827 回答
1

使用 J2SE JVM,您可以将任何 Graphics 对象转换为 Graphics2D 对象,然后使用它来绘制 Bezier 线。

有关示例,请参见此处

于 2010-08-16T00:16:23.323 回答