【问题标题】:SFML fullscreen text editorSFML 全屏文本编辑器
【发布时间】:2010-12-15 17:33:38
【问题描述】:

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

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

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

【问题讨论】:

    标签: .net text editor fullscreen sfml


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-18
      • 2019-10-31
      • 1970-01-01
      • 2020-08-12
      • 1970-01-01
      • 2019-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多