2017-06-24 40 views
0

以下是爲500 * 500的圖片框區域製作100個網格的代碼。該區域從x = 300 y = 200開始並以x = 800 y = 700結束。每個單元側等於50個像素。如何從圖片框中將特定區域製作爲C#中特定數量的單元格的網格

//makes grid in picture box 
     private void drawGrid() 
     { 
      int numOfCells = 100; 
      int cellSize = 50; 
      Pen p = new Pen(Color.Blue); 


      for (int i = 0; i < numOfCells; i++) 
      { 
       // Vertical 
       paper.DrawLine(p, i * cellSize, 200, i * cellSize, 700); 
       // Horizontal 
       paper.DrawLine(p, 300, i * cellSize, 800, i * cellSize); 
      } 
     } 

我在網格外獲得了額外的線條,我不知道如何去除它們,請參閱以下鏈接中的以下快照以更多地理解我。

snapshot(here)

回答

1

你是循環和繪製兩條線的每個細胞。但是,由於您正在繪製正方形網格,因此您希望循環Math.Sqrt(numOfCells) + 1次以在此情況下繪製11行以包含邊框。

您還希望用您的x和y值來抵消i*cellSize表達式。 因此,paper.DrawLine(p, i * cellSize, 200, i * cellSize, 700);在水平線上變爲paper.DrawLine(p, i * cellSize + 300, 200, i * cellSize + 300, 700);200的類似偏移。

+0

不工作.... – Rose

+0

什麼改變了?你可以再拍一張截圖嗎? – jlynch630

+0

https://www.dropbox.com/s/is3pdpwxxld4stc/gfsfstst.png?dl=0 – Rose

1

您可以使用它。它會爲你工作。您可以設置左側和頂部。

private void drawGrid() 
{ 
    int numOfCells = 100; 
    int cellSize = 50; 
    Pen p = new Pen(Color.Blue); 

    int left = 50;// Left 
    int top = 10;// Top 
    int width = cellSize * numOfCells; 
    int height = cellSize * numOfCells; 

     for (int i = 0; i <= numOfCells; i++) 
     { 
      // Vertical 
      paper.DrawLine(p, i * cellSize + left, top, i * cellSize + left, height + top); 
      // Horizontal 
      paper.DrawLine(p, left, i * cellSize + top, width + left, i * cellSize + top); 

     } 
} 
相關問題