1

我正在尝试创建一个全屏简约文本编辑器(简约我的意思是只有一个闪烁的插入符号,黑色背景,通过箭头控制键盘来移动文本,退格删除等,就是这样)。我创建了一个 RenderWindow,我有一个用于文本的全局字符串缓冲区,我正在使用 String2D 类在屏幕上将其可视化(我正在使用 VC2010 和SFML .NET 包在 C# 中开发它)。

基本上我所做的是捕捉击键,检查它们是否来自字母、数字或任何其他对书写有用的书面符号,并从使用 RenderWindow 的绘图在屏幕上永久可视化的字符串缓冲区中添加或减去它们。

现在的问题是,如何实现由箭头控制的正确插入符号移动。如果有人想使用向下/向上/向左/向右箭头在整个文本屏幕上移动。对于一行文本中的左/右移动很容易,可以实现一个计数器来知道我应该在哪个字符之后渲染插入符号。尽管如此,最终我将不得不在屏幕结束的地方换行,然后是什么,如果有人想向下或向上排列,我如何正确“发现”在哪里呈现插入符号,以及如何知道它在字符串中的哪个位置,因为有人之后可以添加或删除部分文本。或者也许我的方法完全错误?请指教。

4

1 回答 1

2

将保存索引的附加Line对象列表存储到主字符串缓冲区中。每次将换行符添加到缓冲区时,都会更新您当前的Line对象并为新行添加一个新对象。

要移动插入符号,只需找到当前行并根据需要向上或向下移动一行。

一种不同的方法可能是将每一行存储在一个单独的字符串中,但这在执行跨行的操作时会增加一些复杂性。

于 2010-12-15T17:46:50.343 回答