C#+ WPF:文本模式相当于旧的DOS库或curses

时间:2011-03-01 05:24:20

标签: c# wpf fullscreen

目标:对于个人项目,我想用全屏命令行,十六进制编辑器,文本编辑器等模拟一个老式的计算机界面。所有文本,没有图形。 (对于假想计算机的模拟器/模拟器。)

起点:我已经发现控制台模式不能再被完全筛选了,但是我可以轻松地在WPF中全屏显示WindowState = Maximized和WindowStyle = None。所以我可以制作一个全屏TextBox。

问题:是否存在用于基本写入文本屏幕和从键盘读取的现有控件,模式或库(不填写和提交表单上的字段,如TextBox面向)?

我假设我需要创建自己的自定义控件而不是文本框,并构建一大类低级方法来定位光标,输出字符,对输入做出反应等等。但是如果有尝试的话而且真正的方法或标准方法,我宁愿使用它而不是燃烧时间重新发明常用的轮子。

在过去的DOS时代,我会使用基于直接BIOS视频通话,PEEK和POKE到视频RAM以及键盘和鼠标轮询的库。当然,这不再适用,但标准控制台例程也不适用。那里有什么东西填补了这个利基市场吗?

[编辑]

澄清。在DOS时代,我们拥有以下内容的库:

Scroll(3); 
Write(24,1, "Your command has been queued for execution"); 
input = Prompt(25, 1, "Enter a command>");

在文档编辑模式下,我们会执行

之类的操作
key = WaitKey(); 
switch (key) { 
  case PGUP: Scroll(-24); 
  case PGDN: Scroll(24);
  case LEFT: MoveCursor(-1,0);
  case DOWN: MoveCursor(0,1);
  // ...
} 
等等......这就是我正在寻找的那种东西。具有写,滚动,提示等功能的东西

2 个答案:

答案 0 :(得分:1)

听起来你正在开发的东西比标准的Windows窗体应用程序更接近游戏 - 使用游戏开发库(如SDL或Microsoft XNA)可能会让事情变得更加直接。

如果您已经熟悉控制台在旧版本中运行的方式,那么实现它应该非常简单 - 您可以在屏幕上显示背后的字符数组+光标位置结构应该是每帧都能轻松打印到屏幕上,加上游戏库,您可以拦截和处理所有键盘事件。

如果你打算将另一个进程的输出路由到这个“屏幕”,那么事情可能会变得有点棘手 - 如果是这种情况那么这可能不是最好的主意。

答案 1 :(得分:1)

尝试使用WPF TextBox实现文本模式应用程序的外观(和响应性)将会产生令人失望的结果。看看Pete Brown在WPF和Silverlight中创建Commodore 64 emulator时所做的事情。

我相信他的实现实际上使用了可写位图来模拟视频卡。所以你提到的偷看和戳戳实际上会发生在内存缓冲区而不是屏幕上,然后逐帧变成屏幕图像。