MikeB被接受的答案當然是正確的,但OP仍然困惑,人們仍然看到這一點,所以我添加了一個澄清的答案(是的,8年後)。
邁克的方法
private void pictureBox1_Paint(object sender, PaintEventArgs e)
是需要在正確的時間被稱爲一個獨立的方法。要做到這一點,你需要註冊OnPaint事件調度器,所以每當發生OnPaint事件時都會調用它。要做到這一點,你就會把下面的線爲一些方便的地方,如在類的構造函數:
OnPaint += pictureBox1_Paint;
這種做法是正常的,但如果你得到你真正需要的繪圖性能會傷害你,因爲它需要花費額外的時間來構建PaintEventArgs並傳遞給您。更好的方法是重寫父類的OnPaint方法,並將繪圖代碼直接放在OnPaint方法中。這樣你就不必連接任何事件處理程序,而且運行速度更快。代碼看起來幾乎相同:
protected override void OnPaint (PaintEventArgs e)
{
Graphics g = e.Graphics;
int numOfCells = 200;
int cellSize = 5;
Pen p = new Pen(Color.Black);
for (int y = 0; y < numOfCells; ++y)
{
g.DrawLine(p, 0, y * cellSize, numOfCells * cellSize, y * cellSize);
}
for (int x = 0; x < numOfCells; ++x)
{
g.DrawLine(p, x * cellSize, 0, x * cellSize, numOfCells * cellSize);
}
}
最後一個建議:在PictureBox控件中繪圖幾乎不是一個好主意。很多人都這樣做,但並不是很多專家會那樣做。它們沒有被設計成一個繪圖畫布 - 它們只是繼承了所有基於窗體的控件所具有的相同功能 - 而且它們增加了複雜性並減慢了你的速度,而沒有添加任何有用的功能。如果您擺脫了圖片框,並且直接在持有圖片框的窗體或面板上繪圖,您將會更加快樂。
+1謝謝!這是參考生命的遊戲。但我不知道爲什麼或如何使用'Form1_Paint'我認爲它將在事件'pictureBox'內?我對C#相當陌生,不勝感激。 – techAddict82
這應該是圖片框的繪畫事件。我的道歉 – MikeB
好的,謝謝。我沒有任何網格出現。但代碼也沒有錯誤。所以我不確定最新的問題。 – techAddict82