我正在C#中创建康威的生活游戏,除了刷新显示下一代的面板外,一切正常。我可以画到面板为单元格建立网格线,使用simWindow_Paint
和simWindow_MouseClick
来放置并销毁“生命”,但目前我无法更新它。从另一个函数间接绘制面板
private void updateGame(){
int living = 0;
int dead = 0;
for(int i = 1; i < gameHeight; i++)
for (int j = 1; j < gameWidth; j++){
//set cell location and size
Rectangle cell = new Rectangle();
cell.Height = cell.Width = 9;
int X = j - 1;
int Y = i - 1;
cell.X = Convert.ToInt32(X * 10 + 1);
cell.Y = Convert.ToInt32(Y * 10 + 1);
using (Graphics g = this.simWindow.CreateGraphics()){
if (gameArray[i, j] == true){
Brush brush = new SolidBrush(Color.Red);
g.FillRectangle(brush, cell);
++living;
} else {
Brush brush = new SolidBrush(Color.White);
g.FillRectangle(brush, cell);
++dead;
}
}
}
}
我不知道如果我所试图做的是在C#中可能的,我已经在帕斯卡尔做到了这一点,但我不知道C#的工作方式相同...
这里不清楚有什么问题。你已经提出了一种绘制绘画的方法,但没有提供调用它的代码。在“Paint”事件中,您通过PaintEventArgs得到一个图形对象,该对象应该用于绘画,但是您不在此处使用它。是“simWindow”面板还是整个窗体? – 2012-07-26 13:05:39