【问题标题】:Detect text selection with SDL_ttf 2使用 SDL_ttf 2 检测文本选择
【发布时间】:2016-12-19 12:52:58
【问题描述】:

我想用 SDL 和 SDL_ttf 实现一个简单的输入框。就像浏览器中的地址栏一样。

我猜用 SDL_ttf 检测鼠标选择的最简单和最有效的方法是什么。

假设框显示文本如下:

+--------+
| abcdef |
+--------+

用户在“c”和“d”之间单击,然后将鼠标向左拖动几个像素。现在我需要检测它是否选择了“c”字符。

SDL_ttf 库有几个函数来确定文本的度量。您可以使用TTF_SizeUTF8 计算整个文本的大小,还可以使用TTF_GlyphMetrics 确定单个字符的字形大小。

粗略的想法是创建一个特殊的数组,其中包含具有各自大小的所有单个字符,以确定它们在框中的位置。

您对如何轻松实现这一点有更好的想法吗?

【问题讨论】:

  • 'All' 就 unicode 而言是一个巨大的数字,但是是的,类似的东西(例如,缓存最近使用的字形的值,但删除旧的字形)。或者,如果可以接受,就使用等宽字体。
  • 是的,使用等宽字体会容易得多:)

标签: sdl-2 sdl-ttf


【解决方案1】:

立即渲染模式下的文本选择应该从零开始,这是很多工作要做。有许多即时 gui 库(如 imgui)使用的传奇 stb_textedit,你可以在这里找到它 https://github.com/nothings/stb/blob/master/stb_textedit.h

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 2014-02-24
    • 2011-12-07
    • 1970-01-01
    相关资源
    最近更新 更多