2014-07-09 47 views
0

我有這個奇怪的問題,當我與圖像交互,例如Java圖像座標(0,0)在右下角

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; 
    } 
} 

隨着那場比賽的地圖從圖像I「掃描」始終開啓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(); 
    } 
} 

這是正常的,什麼是最好的梅索德防止這個?

+2

你能否提供一個演示這種行爲的[MCVE](http://stackoverflow.com/help/mcve)? –

回答

0

你的代碼中的某處我相信你正在旋轉可能導致這種情況發生的圖形「g」。有一個MCVE找出什麼是錯誤的將是很好。

也許檢查什麼img.getRGB(16,16)給你,你可能會發現你的代碼有什麼問題。

+1

我發現我的錯誤。對於printTerrain方法,我犯了錯誤,打印列而不是數組的行。 – Linard

相關問題