我是一个完整的初学者,我已经在实践中进行了一个使用java的小型项目,并且我有点卡住了。我已经通过堆栈交换进行了浏览,但是我无法找到一个好的,新手友好的解释来说明如何在某种模式下绘制简单的多边形。在java中绘制六角形地图
重要的一点是每个六边形都需要用随机RGB颜色填充。这将稍后改变,并且将从CSV文件中读取RGB值,但在计算出瓷砖之前,我不想过度复杂化代码。
这是我到目前为止。我需要一个相当大的hexmap(200x80)保存在png中,但这是另一个问题。
我认识到,转置可能是做一个可怕的方式,我认为是一个特定的系统,让我在一定的X,Y COORDS根据需要,我会产生绘制多边形。
我的问题是:使用转置循环绘制一个大的200x80 hexmap是否可行?还是有更好的方法?我会很高兴把我朝正确的方向倾诉。
int count = 0;
super.paintComponent(g);
Polygon p = new Polygon();
int hexSize = 100;
int sizeA = (hexSize/3)*2;
int sizeB = hexSize/3;
//hexagon definition
for (int i = 0; i < 6; i++)
p.addPoint((int) (sizeA + sizeB * Math.cos(i * 2 * Math.PI/6)),
(int) (sizeA + sizeB * Math.sin(i * 2 * Math.PI/6)));
//painting hexmap
while (count<5) {
int red = ThreadLocalRandom.current().nextInt(0, 255);
int green = ThreadLocalRandom.current().nextInt(0, 255);
int blue = ThreadLocalRandom.current().nextInt(0, 255);
Color myColor = new Color(red, green, blue);
g.setColor(myColor);
count++;
g.translate(49, 30);
g.drawPolygon(p);
g.fillPolygon(p);
}
}
你的问题是什么? – StephaneM
哦,对不起。我正在寻找这种方式绘制完整的200x80十六进制地图的帮助。我正在试图将我的头包裹在一个循环中,该循环将以适当的模式绘制线条和列的正方形,但没有太多成功(尚未!)。 –
sizeA是什么? sizeB? –