SFML全屏文本编辑器

时间:2010-12-15 17:33:38

标签: .net text editor fullscreen sfml

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

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

现在的问题是,如何实现箭头控制的正确插入符运动。如果有人想使用向下/向上/向左/向右箭头移动整个文本屏幕。对于一行文本中的左/右移动很容易,可能会实现一个计数器来知道我应该在哪个字符后重新插入插入符号。然而,最终我将不得不打破屏幕结束的线条然后,我怎么能正确地“发现”如果某人想要排队或者向下排队以及如何知道它在字符串中的哪个位置是因为有人之后可以添加或删除部分文字。或许我的方法完全错了?请指教。

1 个答案:

答案 0 :(得分:2)

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

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

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