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

时间:2010-08-15 23:14:04

标签: java graphics awt computational-geometry

我在这里问更多愚蠢的图形问题。希望很快我会离开图形世界,再次将自己牢牢地植入无色中间层。对于那些能够通过代码以令人愉悦的方式摆弄图像的人来说,我有了新的尊重。

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

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

如果您需要任何其他信息,请不要犹豫。

谢天谢地, 马特

2 个答案:

答案 0 :(得分:4)

开始:
*创建GeneralPath
*使用GeneralPath.curveTo(浮点数x1,浮点数y1,浮点数x2,浮点数y2,浮点数x3,浮点数y3)将曲线添加到路径中 *获得Graphics2D对象
*使用Graphics2D.draw(Shape s)绘制GeneralPath(这是一个形状)

您可以选择设置线帽和连接样式:
*创建BasicStroke(宽度= 1,上限= CAP_ROUND,加入= JOIN_ROUND)
*使用Graphics2D.setStroke设置行程

唯一困难的是你必须弄清楚方法曲线的x3,y3

答案 1 :(得分:0)

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

See here for an example