我正在尝试将红色六边形重新定位到下图中黑色箭头所指向的矩形的中心。
我找不到在哪里放置x和y坐标。
public void poligon(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
Polygon pol;
int x[] = {375, 400, 450, 475, 450, 400};
int y[] = {150, 100, 100, 150, 200, 200};
pol = new Polygon(x, y, x.length);
g2d.setPaint(Color.red);
g2d.fill(pol);
}
答案 0 :(得分:2)
当前,您的六角形位于您要居中的位置的上方和左侧。因此,向x[]
中的每个整数添加,并从y[]
中的每个整数减去。这些数组中的整数代表六角形顶点的x和y坐标。
我只想尝试随机数来缩小要添加和减去的确切数量。例如,乍一看,您似乎需要向x[]
加100,并从y[]
中减去20。您可以对值进行硬编码:
int x[] = {375 + 100, 400 + 100, 450 + 100, 475 + 100, 450 + 100, 400 + 100};
int y[] = {150 - 20, 100 - 20, 100 - 20, 150 - 20, 200 - 20, 200 - 20};
或者您可以节省一些时间来缩小数值范围,然后运行循环:
public void poligon(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
Polygon pol;
// the x and y coordinates of the vertices of your hexagon
int x[] = {375, 400, 450, 475, 450, 400};
int y[] = {150, 100, 100, 150, 200, 200};
// how much to offset the x and y coordinates by
int xOffset = 100;
int yOffset = 20;
// offset your hexagon until you narrow down the right position
for(int i = 0; i < x.length; ++i)
x[i] += xOffset;
y[i] -= yOffset;
pol = new Polygon(x, y, x.length);
g2d.setPaint(Color.red);
g2d.fill(pol);
}
注意:有很多简单的方法可以计算中心坐标,但是使用您提供的代码,这是我唯一可以提供的解决方案。
答案 1 :(得分:1)
我认为您总是将示例x和y坐标放入多边形中。 在您的示例中,多边形点上的x位置为:375、400、450、475、450、400,相同点的y位置为150、100、100、150、200、200。
我会尝试找出两点之间的差异并将其保存。在您的示例中,您可以将375作为x的基数。因此,数组内部的点将是:
int baseX = 375;
int x[] = {baseX, baseX + 25, baseX + 75, baseX + 100, baseX + 75, baseX + 25};
请对y做同样的事情。之后,以baseX和baseY为基础进行实验。这样,您就不会破坏多边形,并且可以安全地移动多边形。
编码愉快!