我在c#中有一个treeView / treeNode,想要突出显示部分节点文本。 为此我已经找到了一个很好的解决方案:https://stackoverflow.com/a/13824463/2925238 但不幸的是,字符串部分似乎被错误地测量和/或绘制。
看起来Graphics.DrawString方法在开头添加了一些空格,Graphics.MeasureString-method计算了一个假长度(字符串部分越长,错误添加的时间越长)。
有谁知道,为什么以及如何摆脱这个?
提前致谢: - )
这是我的DrawNode代码:
string txt = e.Node.Text;
int crt = 0;
float posX = e.Bounds.Left, posY = e.Bounds.Top;
string sub;
bool flag = false;
using (Font font = new System.Drawing.Font(tvSearchResults.Font, System.Drawing.FontStyle.Regular))
{
while (crt < txt.Length)
{
using (Brush brush = new SolidBrush(flag ? Color.Black : Color.Blue))
{
sub = (crt + 5 < txt.Length) ? txt.Substring(crt, 5) : txt.Substring(crt);
e.Graphics.DrawString(sub, font, brush, posX, posY);
SizeF siz = e.Graphics.MeasureString(sub, font);
posX += siz.Width;
crt += 5;
flag = !flag;
}
}
}