2014-12-05 48 views
1

我試圖繪製一個生命遊戲應用程序的矩形對象的網格。在這個階段,我只是想讓基礎網格工作。最終,它將評估一個布爾數組的實​​況和死亡單元格,並相應地更改繪製樣式。爲了測試目的,我儘可能簡化了代碼。我試圖繪製一個沒有填充的100x100矩形的9x6網格。試圖在Android中使用drawRect繪製柵格獲取奇怪的輸出

這裏是我的代碼:

paintGrid.setStyle(Paint.Style.STROKE); //sets paint style for grid squares 
    int gm = 100; //gridMultiplier determines rectangle size in this case 100x100 

    for(int r = 0; r < 9; r++) //paints grid with 9 rows 
    { 
     for(int c = 0; c < grid[0].length; c++) //6 columns 
     { 
      top = r*gm; //sets LEFT side 
      bottom = top+gm; //sets RIGHT side 
      left = c*gm; 
      right = left+gm; 
      Log.v(LOGTAG, "left: " + left + " right: "+ right+ " top: " + top + 
        " bottom: " + bottom); //testing 
      canvas.drawRect(left, top, bottom, right, paintGrid); //paints dead Cell 
     } 
    } 

我希望這首先繪製上排左到右,然後在第二行畫一個網格,並繼續,直到完成。 Instead I get this for an output.

用於測試的logcat輸出im似乎表明循環工作正常。我得到: Left:0 right 100 top 0 bottom 100 Left:100 right 200 top 0 bottom 100 Left:200 right 300 top 0 bottom 100 Left:300 right 400 top 0 bottom 100 Left:400 right 500 top 0底部100

左向右0 100 100強底部200 左向右100 200 100強底部200 左向右200 300 100強底部200 ...等

林在我無計可施到此爲止!我的印象是二維數組很重要,所以我一直試圖保持這種設置。有什麼建議麼?提前致謝!

回答

1

您已切換右側和底部參數。正確的順序是左,上,右,下。由於android需要right> left和bottom> top或者不會繪製矩形,所以會產生結果。所以你的代碼只會繪製那些由於bottom = right而不相關的對角線。

+0

謝謝!我並不感到奇怪,這是一件愚蠢的事情。 – agarfin 2014-12-05 21:18:50