我正试图在AWT中画出一个5分的明星。 2d网格中的每个点相隔72度 - 所以我认为我可以通过将点分开144度来仅使用5个点来绘制多边形,因此多边形按1,3,5,2,4的顺序输入点/ p>
不幸的是,这涉及很多相交线,最终结果是有5个三角形具有我想要的颜色,围绕着一个尚未着色的五边形。
仔细观察,它与偶数规则有关,相交点不会被填充。
我需要动态绘制星形,并使用描述的特定形状(用于缩放等)。 如果我手动绘制它相交的点,我的星形会出现一些人为错误。
有没有什么方法可以关闭这个功能,或者失败,是否有办法让多边形返回一个x []和y []数组,其中线条相交,所以我可以在其中绘制另一个?
感谢。
答案 0 :(得分:0)
以十个点,相隔36度,以两个交替的半径绘制它。
答案 1 :(得分:0)
按照Polygon
的建议建立笛卡尔坐标中的10点relet,如此example所示。请注意坐标系如何以原点为中心,以便于旋转,缩放和平移。由于Polygon
实现了Shape
界面,因此可以应用AffineTransform
createTransformedShape()
方法。可以找到更高级的形状库here。
有没有办法让多边形返回行相交的
x[]
和y[]
数组?
虽然通常没必要,但您可以使用Shape's
PathIterator
检查组件坐标。我发现在调用createTransformedShape()
之前和之后检查坐标是有益的。