2010-12-15 116 views
1

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

基本上,我所做的就是捕捉按键,检查它们是否来自字母,数字或任何其他书写符号,在写入时有用,并使用RenderWindow的绘图在字符串缓冲区中添加或减去它们。

现在的问题是,我该如何执行箭头控制的正确脱字符号运动。如果有人想使用向上/向上/向左/向右箭头在整个文本屏幕上移动。对于一行文本中的左/右移动很容易,可以实施一个计数器来知道在哪个字符后我应该插入字符。尽管如此,最终我还是必须在屏幕结束处断开线路,然后怎么才能正确地“发现”插入字符的位置,如果有人想要插入或插入,以及如何知道它在字符串中的位置,因为有人之后可以添加或删除部分文本。或者,也许我的做法是完全错误的?请指教。

回答

2

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

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

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

+0

非常感谢,我现在正在测试它:) – Tobiasz 2011-01-02 21:06:14