寻找支持ANSI转义码的用户控件。

4

我正在寻找处理带有ANSI转义代码的Telnet文本的方法。对于赏金,我正在寻找完整的实现,可以将文本附加到缓冲区的末尾。控件应该是可滚动的,但仍然能够处理附加文本、光标定位等,即使用户已经滚出视图。

例如,

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

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

因为这需要处理光标定位,所以设置每行默认80个字符(80列)是可以的,但还需要处理其他列大小。能够更改字体也是很好的。

请参见维基百科ANSI转义代码以获取更多信息。

3个回答

2

VTxxx,特别是VT52转义序列,是发展成ANSI标准转义序列的基础,如ANSI X3.64所示。Dart的控件值得一看。 - Slaftos

2
请查看以下链接:AckTerm @ sourceforge.com 我正在尝试使用C#编写的Terminal Control项目从www.sourceforge.com接收串口接口传输的ANSI代码进行翻译。如果Ackterm不适合您,请尝试谷歌“终端控制项目”。
希望这是您要寻找的内容...

1

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

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


我已经编写了解析器,但不幸的是我需要处理一些其他问题,例如光标定位、清除屏幕等。 - esac
听起来你也卡在解析那些代码上了。我没有更多的建议,因为真正影响RichTextBox的每个控制字符的解释取决于你自己。你是不是想编写一个类似终端的控件?一定有更好的方法来做到这一点... - Matt Ball
一个类似终端的控件,某种程度上是的。我已经确定了如何在自己的控件中绘制带有颜色的字符。但是,这样做会失去像RichTextBox这样的一些功能。我必须将其转换为自己的颜色/字符结构,并将其映射到屏幕上的内存中。最好的方法是只需将ANSI转义代码保留在字符串中,控件会解析并随着进展进行渲染。 - esac

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接