Curses 等库的工作方式与窗口管理器运行图形环境的方式非常相似。窗口、按钮、复选框等控件都是由库定义的。
您不是将 WriteLining 写入屏幕,而是将文本写入窗口或设置某些控件的文本。该库跟踪窗口、重叠、边框效果、阴影、拖动行为(如果支持鼠标)。它建立了字符、前景色和背景色的字符缓冲区。
发布的 goto(x, y) 示例可以工作,但如果实现对每个字符都执行此操作,则性能会明显滞后。为了提高速度,当您更改某些文本或其他属性时,库会知道需要从字符缓冲区更新的矩形区域,并通过优化的调用将该区域的新字符数据写入到屏幕上到视频驱动程序。
与仅将每个可打印字符回显到屏幕的基本控制台应用程序不同,这些高级应用程序中的键盘输入会被拦截,并且这些字符会更明确地写入(或不写入,在应用程序的热键的情况下)正确的窗口或其他窗口。
我希望 .Net 内置了一个完整的控制台窗口库。 ... [叹气]我认为那些旧的控制台风格的应用程序看起来很可爱。