当我与图像交互时,我遇到了这个奇怪的问题,例如
img.getRGB(imgx, imgy);
或
g.drawImage(img, x, y, x+16,y+16, imgx, imgy, imgx+16, imgy+16);
图像的坐标系(imgx,imgy)以右下角为中心。
public class Terrain {
private final TerrainTile[][] terrainArray;
public Terrain(BufferedImage img) {
System.out.println("X: " + img.getWidth() + " Y: " + img.getHeight());
terrainArray = new TerrainTile[img.getWidth()][img.getHeight()];
for (int x = 0; x < img.getWidth(); x++) {
for (int y = 0; y < img.getHeight(); y++,) {
System.out.println("X: " + x + " Y: " + y + " Color: " + img.getRGB(x, y));
fillTerrain(x, y, img.getRGB(x, y));
}
}
}
private void fillTerrain(int x, int y, int color) {
switch (color) {
case 0xFF0000FF: // BLUE
terrainArray[x][y] = TerrainTile.WATER;
break;
case 0xFF00FF00: // GREEN
terrainArray[x][y] = TerrainTile.GRASSLAND;
break;
case 0xFF007F00: // DARK GREEN
terrainArray[x][y] = TerrainTile.FORREST;
break;
case 0xFF666666: // GREY
terrainArray[x][y] = TerrainTile.HILL;
break;
default: // BLANK
terrainArray[x][y] = TerrainTile.BLANK;
break;
}
}
因此,从图像“扫描”的游戏地图总是旋转180° 当我打印出来时
public void printTerrain() {
for (int x = 0; x < terrainArray.length; x++) {
for (int y = 0; y < terrainArray[0].length; y++) {
System.out.print(getTileID(x, y) + ", ");
}
System.out.println();
}
}
这是正常的,防止这种情况的最佳方法是什么?
答案 0 :(得分:0)
在你的代码的某个地方,我相信你正在旋转图形&#34; g&#34;这可能导致这种情况发生。有一个MCVE来弄清楚什么是错误的。
也许查看img.getRGB(16,16)
给你的内容,你可能会发现代码中有什么问题。