【发布时间】:2015-04-26 00:53:32
【问题描述】:
我正在使用以下方法绘制一个字符串:
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 from the line。或者,我可以为带有小数分隔符的数字获得一个不错的试错值,如果最终该数字没有小数分隔符,它将位于线条上方(并破坏绘图)。
有什么提示吗?在数字是整数的情况下可能会强制字符串具有,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, ????)
我不知道在第三个变量中放什么,提示吗?为什么我需要PaintEventArgs?
【问题讨论】:
-
您使用的是哪个库? WPF、XNA、GDI?或者更具体地说,
g变量的类型是什么? -
始终假定该运算符存在,如果不存在则添加 .00 ?
-
g将是一个Graphics对象 - 这是 winforms / GDI。 -
@JoachimGotzes,是的,这是一种可能性,但复杂的可能性也很容易变得混乱
标签: c# drawstring valueconverter