Java - 填充重叠的多边形

时间:2010-10-16 17:49:59

标签: java awt polygon

我正试图在AWT中画出一个5分的明星。 2d网格中的每个点相隔72度 - 所以我认为我可以通过将点分开144度来仅使用5个点来绘制多边形,因此多边形按1,3,5,2,4的顺序输入点/ p>

不幸的是,这涉及很多相交线,最终结果是有5个三角形具有我想要的颜色,围绕着一个尚未着色的五边形。

仔细观察,它与偶数规则有关,相交点不会被填充。

我需要动态绘制星形,并使用描述的特定形状(用于缩放等)。 如果我手动绘制它相交的点,我的星形会出现一些人为错误。

有没有什么方法可以关闭这个功能,或者失败,是否有办法让多边形返回一个x []和y []数组,其中线条相交,所以我可以在其中绘制另一个?

感谢。

2 个答案:

答案 0 :(得分:0)

以十个点,相隔36度,以两个交替的半径绘制它。

答案 1 :(得分:0)

按照Polygon的建议建立笛卡尔坐标中的10点relet,如此example所示。请注意坐标系如何以原点为中心,以便于旋转,缩放和平移。由于Polygon实现了Shape界面,因此可以应用AffineTransform createTransformedShape()方法。可以找到更高级的形状库here

  

有没有办法让多边形返回行相交的x[]y[]数组?

虽然通常没必要,但您可以使用Shape's PathIterator检查组件坐标。我发现在调用createTransformedShape()之前和之后检查坐标是有益的。