2013-01-04 48 views
1

虽然我熟悉重写Swing的paintComponent(Graphics g)方法和绘制自定义形状,但我努力用一些反曲线绘制矩形(请参阅http://imgur.com/ih25X)。使用Swing绘制反曲线?

有谁知道我会如何去创建Shape对象,让我画这个?

+0

这是一种廉价的解决方法,但我认为你最好的机会是只吸引你一些油漆程序进行图像。 – Aaron

+0

也许使用直线,并允许通过点击和拖动来弯曲直线,或者如果您使用'draw(Graphics2D g2d,int x,int y)'方法创建自己的形状类,该方法不会使用直线绘制该形状在图形对象的给定点上) –

回答

3

我相信GeneralPath是一种描述任意形状的典型方式。

在你的情况下,它看起来像你将不得不与quadTo descibed lineTo和两个(曲线)描述的两行,然后调用closePath()来表示一个封闭的多边形,像(只是挑选方便坐标东西在这里,你“可能会想要的东西很划算大):

GeneralPath polygon = 
    new GeneralPath(GeneralPath.WIND_EVEN_ODD, 4); 
polygon.moveTo(2.0, 1.0); 
polygon.lineTo(2.0, 5.0); 
polygon.quadTo(1.25, 4.75, 1.0, 4.0); 
polygon.lineTo(1.0, 2.0); 
polygon.quadTo(1.75, 1.75, 2.0, 1.0); 
polygon.closePath(); 
g.draw(polygon); 

此外,检查出这个tutorial on GeneralPath

+0

+1非常好的答案,阅读一下或两遍,并完全忘记它:P –

+0

您也可以转换一个'Shape',如图所示[这里](http://stackoverflow.com /一个/230513分之5594424)。 – trashgod