C#字符串测量

时间:2012-04-18 03:44:34

标签: c# winforms string units-of-measurement

我想将字符串的长度测量为像素单位。我在网上搜索了2天但没有运气。最后,我几分钟前从博客中找到了一些代码片段并对其进行了一些修改。这是我的功能:

private void cmdMeasure_Click(object sender, EventArgs e)
{
    Font fntStyle = new Font("Arial", 16, FontStyle.Regular, GraphicsUnit.Pixel);
    Size textSize = TextRenderer.MeasureText(str2measure.Text, fntStyle);
    MessageBox.Show(textSize.ToString());
}

问题:

16的单位是多少?它是em,pt还是GraphicsUnit enum的单位?我真的没有得到c#定义的描述“以单位参数指定的单位的新字体的大小。”

TextRenderer.MeasureText方法是否在其测量中包含字符之间的空格?

3 个答案:

答案 0 :(得分:3)

  

16的单位是多少?是em,pt还是GraphicsUnit的单位   枚举?我真的没有得到c#定义的描述“em-size of   单位参数指定单位的新字体。“

正如其他人所说,它是像素,因为你传递了GraphicsUnit.Pixel。

  

TextRenderer.MeasureText方法是否包含空格   测量中的字符?

是。它为您提供了整个文本块周围边界框的尺寸。

答案 1 :(得分:1)

TextRenderer.MeasureString确实考虑了空格。在您的示例中,数字16以像素为单位。

虽然,我不确定你是否正确测量你的弦乐。我认为您需要从str2measure文本框中获取字体:

Size textSize = TextRenderer.MeasureText(str2measure.Text, str2measure.Font);

答案 2 :(得分:0)

Ans Q1。它只是在您传递GraphicsUnit.Pixel

时的像素

Ans Q2。它正在考虑整个文本块,无论内容甚至是空格。