我是自定义绘制文本框,现在我正在实现用户可以单击一行并将光标移动到他单击的位置的部分。
我知道如何获取他点击的文本行,因为字符高度在所有字体中都是不变的,但不是列,因为我不知道如何说“把我以前可以绘制的所有文本这个像素数量,“并且因为字符宽度不一致,除非你使用固定宽度的字体,这不是保证。
所以我有点我正在绘制字符串(0
),然后我指出用户点击了这一点。如何获取他们点击的角色的字符串索引?
额外信息:我通过将行存储在List中然后迭代列表并在每一行上使用Graphics.DrawString
来绘制文本。
答案 0 :(得分:1)
没有简单的方法可以在像素上找到角色。
但是,您可以找到字符串将填充的像素。使用Graphics.MeasureCharacterRanges方法。您可以对字符串执行二进制搜索,直到找到MeasureCharacterRanges返回光标位置的字符串。
注意:您可能会看到 Graphics.MeasureString 方法,并试图使用它。别!该方法不会返回准确的测量值。我不记得为什么,但如果你尝试的话,你会尽力而为!