我使用以下内容绘制字符串:
g.DrawString(somestring, somefont, new SolidBrush(Color.Black), X where it starts, Y where it starts));
问题:
有时我想在left side
的{{1}}上对齐绘制的字符串。
但是,如果我不知道字符串长度是多少,它就无法工作。
可能但是noob解决方案:
计算字符数,乘以试验和错误值,然后在X位置减去它,如下所示:
line
这不起作用,因为正如您所猜测的那样,我创建了一个数字,而且该数字可以有string somestring = Convert.ToString(Math.Round(10 * somevalue) / 10) + "m";
int stringcount1 = somestring.Count();
g.DrawString(somestring, somefont, new SolidBrush(Color.Black), X -stringcount1 * trialanderrorvalue, Y));
。
这就是问题,因为小数点分隔符不是很宽的字符,但仍然很重要,它会发送我的字符串海王星 - 远离该行。或者,对于带小数分隔符的数字,我可以得到一个合适的试验和错误值,如果最终数字没有小数分隔符,它将位于该行上方(并破坏图形)。
任何提示?在数字是整数的情况下,可能强制字符串有decimal separator
编辑:
我现在创建了一个方法,该方法将返回给定字符串和字体的,0
对象。
SizeF
问题在于,当我使用
之类的东西回忆起这个功能时 static SizeF MeasureStringMin(string measureString, Font stringFont, PaintEventArgs e)
{
//// Set up string.
//string measureString = "Measure String";
//Font stringFont = new Font("Arial", 16);
// Measure string.
SizeF stringSize = new SizeF();
stringSize = e.Graphics.MeasureString(measureString, stringFont);
return stringSize;
}
我永远不知道在第三个变量中放什么,暗示这个?为什么我需要SizeF stringSize = new SizeF();
stringSize = MeasureStringMin(somestring, somefont, ????)
?