我想将字符串的长度测量为像素单位。我在网上搜索了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方法是否在其测量中包含字符之间的空格?
答案 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。它正在考虑整个文本块,无论内容甚至是空格。