2010-08-15 111 views
4

在这里,我问了更多愚蠢的图形问题。希望不久我会离开图形世界,并将自己牢牢地植入无色中间层。我对能够通过代码以愉快的方式摆弄图像的人有了新的尊重。Java AWT - 绘制通过平滑曲线连接的多边形

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

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

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

类感谢, 马特

+0

如果AWT/Swing有内置的Bezier曲线绘制(我不知道它是否存在),那么你可以这样做。但我的第一个想法是“绕过角落”,我认为你可以使用'Graphics'对象自己弄清楚。您只需将直线和小弧线组合在一起即可。 – MatrixFrog 2010-08-15 23:19:45

+0

我不认为我可以夸大我的图形无能。现在我让AWT完成所有的工作。 :) – Matt 2010-08-15 23:27:55

+0

当我夸大我的无能时,我发现我必须依靠特别强调的术语,这通常是粗俗的。希望有所帮助。 – 2010-08-15 23:29:34

回答

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的方法curveTo

0

有了J2SE JVM可以施放任何Graphics对象Graphics2D对象,然后用它来绘制贝塞尔线。

See here for an example