我无法设置星星的坐标是否有更好的解决方案。我无法得到正确的形状。有人可以帮我吗?
public void star(Graphics shapes)
{
shapes.setColor(color);
int[] x = {42,52,72,52,60,40,15,28,9,32,42};
int [] y = {38,62,68,80,105,85,102,75,58,20,38};
shapes.fillPolygon(x, y, 5);
}
答案 0 :(得分:2)
Sun的实现提供了一些自定义Java 2D形状,如Rectangle
,Oval
,Polygon
等,但这还不够。有些GUI需要更多自定义形状,例如带有圆角的Regular Polygon
,Star
和Regular polygon
。该项目提供了一些常用的形状。所有类都实现了Shape
接口,允许用户使用Graphics2D
的所有常用方法,如fill()
,draw()
,并通过组合它们来创建自己的形状。
修改强>
答案 1 :(得分:2)
老实说,我使用2D Graphics形状API,它们允许你“绘制”一个形状,这更简单(恕我直言),然后使用多边形。优点是,它们易于绘制和转换
话虽如此,您实际遇到的问题是您没有将正确的信息传递给fillPolygon
方法。
如果您查看JavaDocs for Graphics#fillPolygon
,您会注意到最后一个参数是点数:
nPoints - 总分数。
但是你传递5
,数组中实际有11
个点
像...一样的东西。
shapes.setColor(color);
int[] x = {42,52,72,52,60,40,15,28,9,32,42};
int [] y = {38,62,68,80,105,85,102,75,58,20,38};
shapes.fillPolygon(x, y, 11);
现在应该绘制所有点,但是你的一些坐标略微偏离,所以你可能想检查一下
答案 2 :(得分:0)
答案 3 :(得分:0)
你的Y的倒数第二个应该是60而不是20
g2.setColor(color);
int[] x = {42,52,72,52,60,40,15,28,9,32,42};
int[] y = {38,62,68,80,105,85,102,75,58,60,38};
g2.fillPolygon(x , y, 11);
答案 4 :(得分:0)
一颗星星有10分,而不是11分
setBackground(Color.black);
int[]x={250,150,0,150,100,250,400,350,500,350};
int[]y={100,200,200,300,400,300,400,300,200,200};
g.fillPolygon( (x),(y),10);
setForeground(Color.cyan);
这将有助于绘制黑色背景和青色前景的星星