【问题标题】:Looking for a UserControl which supports ANSI escape codes寻找支持 ANSI 转义码的 UserControl
【发布时间】:2009-12-11 16:57:32
【问题描述】:

我希望处理具有 ANSI 转义码的传入 telnet 文本。对于赏金,我正在寻找一个完整的实现,我可以将文本附加到缓冲区的末尾。该控件应该是可滚动的,但仍然能够处理附加文本、光标定位等。当用户滚动到视图之外时。

例如,

"\e[0;32mHello \e[0;37mWorld"

会显示一个绿色的“Hello”和一个白色的“World”

由于这需要处理光标定位,因此设置默认的每行 80 个字符(80 列)就可以了,但还需要处理其他列大小。要是能换字体就好了。

更多信息请参见Wikipedia ANSI Escape Codes

【问题讨论】:

    标签: c# user-controls ansi


    【解决方案1】:

    看看Dart's Vt.NET control(假设 VTxxx 仿真与 ansi 仿真足够接近)。

    【讨论】:

    • VTxxx,特别是 VT52 转义序列是 ANSI X3.64 中的 ANSI 标准转义序列。 Dart 的操控性值得一看。
    【解决方案2】:

    查看以下链接: AckTerm @ sourceforge.com

    我正在尝试使用 Terminal Control 项目从用 C# 编写的 www.sourceforge.com 翻译来自串行接口的 ANSI 代码- 如果 ackterm 对您不利,请 google 终端控制项目

    希望它是您正在寻找的......

    【讨论】:

      【解决方案3】:

      假设您的意思是“ANSI 转义码”,您可以首先将字符串中的每个转义码转换为一种颜色(因为这听起来像是您唯一感兴趣的代码)。只需使用像here(页面底部)这样的表并进行一些自定义字符串解析。

      ANSI 转义码非常老派,所以我不希望它们具有预期的效果。它们用于控制文本终端的输出,而不是像 .NET 用户控件这样的花哨的东西。

      【讨论】:

      • 我已经写好了解析器,不幸的是我还需要处理一些更多的事情,比如光标定位、清屏等等。
      • 听起来您也无法解析这些代码。我没有更多的东西可以提供,因为这完全取决于您来解释每个控制字符如何影响您的 RichTextBox。你基本上是想编写一个功能类似于终端的控件吗?必须有更好的方法来做到这一点......
      • 一个类似于终端的控件,在某种程度上是的。我已经确定了如何将字符绘制到屏幕上,颜色由我自己控制。但后来我失去了很多像richtextbox这样的功能。我必须将其转换为我自己的颜色/字符结构和内存映射到屏幕上。最好我只是将 ansi 转义代码留在搅拌中,并且控件将在进行时解析和呈现
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-18
      • 2014-09-26
      • 1970-01-01
      • 2011-05-05
      • 1970-01-01
      相关资源
      最近更新 更多