私は 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();
}