2

我想将字符串的长度测量为像素单位。我在网上搜索了 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枚举的单位?我并没有真正得到 c# 定义的描述“以 unit 参数指定的单位的新字体的 em-size”。

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

4

3 回答 3

3

16的单位是什么?是em、pt还是GraphicsUnit枚举的单位?我并没有真正得到 c# 定义的描述“以 unit 参数指定的单位的新字体的 em-size”。

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

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

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

于 2012-04-18T03:56:40.737 回答
1

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

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

Size textSize = TextRenderer.MeasureText(str2measure.Text, str2measure.Font);
于 2012-04-18T04:00:30.783 回答
0

回答 Q1。仅当您传递 GraphicsUnit.Pixel 时它是像素

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

于 2012-04-18T04:28:25.203 回答