Nol*_*rin 31 .net c# windows console graphics
Windows控制台界面(思考cmd
窗口)对用户来说是一个非常简单的GUI.然而,处理渲染,用户输入和滚动的效率水平非常高.用于创建此接口的方法无疑与传统桌面GUI的方法完全不同.
我有兴趣为Windows创建自己的自定义控制台/终端,最好使用基于C#和.NET的技术(例如托管GDI +或WPF).作为一个起点,我非常希望重新创建标准的简单Windows shell.然后,我可以扩展内容并从中添加功能.
我正在寻找有关如何创建这样的控制台UI的一般指导,但一些具体要点包括:
我应该使用什么样的渲染模型?渲染循环?部分更新(如WPF)?WinForms模型(不确定这是如何工作的)?
渲染模型中使用了哪种缓存?
如何加载字体以及如何呈现它们?它们是标准的TrueType字体,位图字体还是其他什么?
滚动如何有效地执行?
您认为可能与之相关的任何其他内容!
事实上,对内置Windows控制台UI(甚至是高级Linux终端UI)如何做这些事情以及如何模仿它们的任何解释都是理想的.
编辑:要清楚,我真的想从头开始完成这项工作.基于像GDI +或WPF这样的图形框架,但不多了.
Mar*_*som 21
我曾经从头开始实现一个文本输出窗口 - 我想要一个像Visual Studio中的Output窗口一样工作的窗口.事实证明它比我想象的要复杂得多,而且没有任何输入功能.
不幸的是,代码是用C++编写的,属于前雇主,因此我无法与您分享.但我可以告诉你想要什么.
您需要一种方法来存储可以快速索引的输出行.如果您要对显示的行数进行限制,则还需要从顶部轻松擦除行.在C++中,a deque<string>
是完美的,我不知道C#中的等价物是什么(如果有的话).
您将需要处理以下Windows消息的处理程序,没有特定的顺序.
当行添加到文本缓冲区时,调整滚动条的范围.垂直滚动条范围将是总行数,水平滚动条范围将是最宽行的宽度.
最好有一个等宽字体 - 它使计算更容易.特定的字体技术并不重要.您只需要能够跟踪角色的位置.
滚动如何有效地执行?在滚动时跟踪窗口的顶部和底部线条,当出现绘制消息时,您只绘制当前可见的线条.其他人仍然在缓冲区,但他们没有被触及.可以在滚动窗口时将窗口内容加入blit,只绘制从顶部或底部进入的部分,但是使用今天的处理器会浪费精力 - 窗口会快速重新绘制,以至于您不会注意到.
编辑:巧合的是,我遇到了这个微软滚动条指南,这对于这个任务应该是必不可少的阅读.http://msdn.microsoft.com/en-us/library/windows/desktop/bb787527.aspx
如果你想创建一个漂亮的基于.NET的命令提示符替换,那么我建议查看http://poshconsole.codeplex.com/ 它使用WPF作为图形元素,它实现了PowerShell脚本宿主.PowerShell是微软取代古老的命令提示符.PowerShell默认安装在Windows 7中,但您可以下载它用于XP和Vista.尽管直接使用.NET对象编写脚本,但PowerShell具有高度可扩展性.它也可以嵌入其他程序中.
WPF + PowerShell将是您想要做的一个很好的起点.如果您愿意,可以将PowerShell替换为您自己的命令/脚本引擎.如果你真的雄心勃勃,你可以在DLR上实现自己的脚本语言,以充当你的命令解释器.
祝你好运.
归档时间: |
|
查看次数: |
14342 次 |
最近记录: |