我正在开发一个 C#、Windows 形式的项目,我需要一个正方形网格来做到这一点。我已经能够生成正方形,但问题是我需要生成多达 20,736 个正方形。使用 SDL 库,我可以在 C++ 中毫无问题地做到这一点,但在 C# 中,我遇到了非常糟糕的延迟,有这么多的方块。
我希望方块每 1/100 秒更新一次,所以我使用计时器来重绘方块,但延迟令人难以置信。我首先尝试生成一个按钮网格,但程序刚刚停止。然后我尝试了一个 PictureBoxes 网格,改进了,但不多,然后我尝试了 Pen 和 Rectangle,它也产生了改进。那么在屏幕上绘制 20,000 个正方形最有效的方法是什么?
//Timer that ticks every 1/100th of a second
public void MyTimer_Tick(object sender,EventArgs eArgs) {
count++;
numLabel.Text = count.ToString();
for (int i = 0; i < 60; i++)
{
for (int j = 0; j < 60; j++)
{
editSquares((i * (18 + 2)), (j * (18 + 2)), 18, 18, Color.Black);
}
}
}
//Draw a square
public void drawSquares(int x, int y, int w, int h)
{
cell = new System.Drawing.SolidBrush(System.Drawing.Color.Red);
System.Drawing.Graphics formGraphics = this.CreateGraphics();
formGraphics.FillRectangle(cell, new Rectangle(x, y, w, h));
formGraphics.Dispose();
cell.Dispose();
}
//Edit Squares
public void editSquares(int x, int y, int w, int h,Color color)
{
cell = new System.Drawing.SolidBrush(System.Drawing.Color.Red);
cell.Color = color;
System.Drawing.Graphics formGraphics = this.CreateGraphics();
formGraphics.FillRectangle(cell, new Rectangle(x, y, w, h));
cell.Dispose();
}