如何确定绘制字符串的宽度?
How can i determine the width of a drawn string?
我正在使用以下方法绘制字符串:
g.DrawString(somestring, somefont, new SolidBrush(Color.Black), X where it starts, Y where it starts));
问题:
有时我想在 line
的 left side
上对齐绘制的字符串。
但是,如果我不知道字符串长度是多少,它就不起作用。
可能但菜鸟的解决方案:
计算字符数,乘以试错值,然后在 X 位置减去它,如下所示:
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
也可以没有。
这就是问题所在,因为小数点分隔符不是很宽的字符,但仍然很重要,它会将我的字符串 neptune-far 发送到该行之外。或者我可以为带有小数分隔符的数字获得一个不错的试错值,如果最终该数字没有小数分隔符,它将在线上方(并破坏绘图)。
有什么提示吗?在数字是整数的情况下可能强制字符串具有 ,0
?
编辑:
我现在创建了一个方法,该方法将 return 给定字符串和字体的 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, ????)
我一直不知道在第三个变量中放什么,有提示吗?为什么我需要 PaintEventArgs
?
您需要MeasureString
功能!在绘制之前使用它来获取字符串的确切尺寸,并相应地调整位置。
我正在使用以下方法绘制字符串:
g.DrawString(somestring, somefont, new SolidBrush(Color.Black), X where it starts, Y where it starts));
问题:
有时我想在 line
的 left side
上对齐绘制的字符串。
但是,如果我不知道字符串长度是多少,它就不起作用。
可能但菜鸟的解决方案:
计算字符数,乘以试错值,然后在 X 位置减去它,如下所示:
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
也可以没有。
这就是问题所在,因为小数点分隔符不是很宽的字符,但仍然很重要,它会将我的字符串 neptune-far 发送到该行之外。或者我可以为带有小数分隔符的数字获得一个不错的试错值,如果最终该数字没有小数分隔符,它将在线上方(并破坏绘图)。
有什么提示吗?在数字是整数的情况下可能强制字符串具有 ,0
?
编辑:
我现在创建了一个方法,该方法将 return 给定字符串和字体的 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, ????)
我一直不知道在第三个变量中放什么,有提示吗?为什么我需要 PaintEventArgs
?
您需要MeasureString
功能!在绘制之前使用它来获取字符串的确切尺寸,并相应地调整位置。