gpt4 book ai didi

c++ - 自定义文本框 : Highlighting and Selection

转载 作者:太空宇宙 更新时间:2023-11-04 12:11:58 24 4
gpt4 key购买 nike

我之前发布了一个类似的问题,但是,在思考和测试答案之后,我相信我误解了答案,而回答者也误解了我。原来的问题是here .我认为人们认为我只是想突出字符串,我没有说明我的确切目的。所以,我现在将:

我最近一直在尝试使用 GDI+ 在 C++ CLR 中创建一个 100% 从头开始​​的文本框。当用户单击文本框时,我遇到了放置插入符的挑战。做简单的数学运算(他们点击的位置除以线宽)我可以算出他们点击的是哪一行。但是为了点击字符,我需要(除非有更好的方法)比较行中所有字符的边界矩形并将插入符号放在鼠标适合的字符之前。为此,我需要获取每个单个字符 的确切范围,而不是整个字符串。

我已经尝试了一些东西,但似乎都不起作用:

我相信我不能使用这些方法,除非有办法解决它们的局限性。我希望我比以前更清楚地说明了我的问题和预期的解决方案。

最佳答案

由于文本的紧排和抗锯齿方式,字符的边界取决于其左侧的所有字符。但是,您不需要知道每个字符边界,只需知道单击点两侧的字符边界即可。您可以使用二进制搜索找到那些 - 将您的字符串分成两半,测量它(使用 TextRenderer::MeasureText),并确定它是在您的点击点的左侧还是右侧。继续缩小字符串的大小,直到只剩下一种可能性。

关于c++ - 自定义文本框 : Highlighting and Selection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9400944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com