我正在 GDI+ 和 C# 中创建一个自定义控制台,并且我正在单独绘制缓冲区中的每个字符(循环行和列)。现在我的控制台的默认屏幕大小包含 1600 个字符 (80x20),它忽略(不绘制)空字符,但是在我输入大约 150 个字符后,它开始冻结并且绘图速度变慢。我通过重写 OnPaint 方法并使用计时器来调用 this.Invalidate() 和 this.Update() 进行绘图,但即使我禁用计时器并将其放在插入字符的代码之后,它的绘图速度仍然很慢。
我的绘图代码是这样的
for (int l = topLine; l <= (this.Height / charSize.Height) + topLine; l++)
for (int c = 0; c < bufferSize.Width; c++)
g.DrawString(buffer[l][c].Char, this.Font, Brushes.White, buffer[l][c].Position);
该代码不完全是我所拥有的,但我只是简化了它。