我有一个自定义的圆形文本框,不想将文字写到圆角部分,因此想知道从字符串开头到指定宽度有多少个字符。我知道使用TextRenderer.MeasureText
测量字符串,但它只给出字符串的宽度,无法反向运作。我该怎么办?
有时候我可以做到这一点,但可能需要花费很长时间。
string resultText = string.Empty;
for (int i = 0; i < Text.Length; i++)
{
resultString = Text.Substring(0, i);
if (TextRenderer.MeasureText(resultText, Font).Width <= textWidth)
break;
}
LINQ
在语法上减少for循环,但我会说你的方法没问题...当然,你也可以通过某种递归的“二分查找”方式,从中间开始切割并根据宽度评估结果向左或向右移动...这样稍微复杂一些,但对于长字符串可能会更快。但如果字符串不是那么长,你所做的可能已经足够好了。 - Ian