string str = "国";知道这个字符串输出时的字体,与大小,是否加粗等等,可以获取到font对象.
我想获取 “国” 字打印出来实际的毫米是多少,请教?
/*
打印一个一号字, 下面这种解决方案算出来的数是:11.9244375 , 但用尺子实际量的话,大约在7毫米左右,
不清楚如何换算 ???
*/ // 计算字体宽度
Graphics tmpG = this.CreateGraphics();
SizeF size = tmpG.MeasureString("国", this.lblContent.Font);
float StringWidth = size.Width;
我想获取 “国” 字打印出来实际的毫米是多少,请教?
/*
打印一个一号字, 下面这种解决方案算出来的数是:11.9244375 , 但用尺子实际量的话,大约在7毫米左右,
不清楚如何换算 ???
*/ // 计算字体宽度
Graphics tmpG = this.CreateGraphics();
SizeF size = tmpG.MeasureString("国", this.lblContent.Font);
float StringWidth = size.Width;
Graphics tmpG = this.CreateGraphics();
SizeF size = tmpG.MeasureString("国", this.lblContent.Font);
float StringWidth = size.Width;你不是已经写了宽度吗?
Font arialBold = new Font("SimSun", 9.0F);
Size textSize = TextRenderer.MeasureText(StringStr, arialBold);
1. 想要的是字的宽度与高度,而非像素.
2. 结果是int型的,毫无精确而言.
缇的解释
所有 Visual Basic 的移动、调整大小和图形绘制语句,根据缺省规定,使用缇为单位。缇是打印机的一磅的 1/20(1,440 缇等于一英寸;567 缇等于一厘米)。这些测量值指示对象打印后的大小。屏幕上的物理实际距离根据监视器的大小变化。“改变对象的坐标系统”中描述了如何选择缇以外的单位。
参照
http://hi.baidu.com/l408890892/blog/item/c71d37cefa6e0d1c00e928e3.html
Graphics tmpG = this.CreateGraphics();
tmpG.PageUnit = GraphicsUnit.Millimeter;
SizeF size = tmpG.MeasureString("国", new Font("宋体",26) );
Console.WriteLine(size.Width);
size = tmpG.MeasureString("国国国国国国国国国国", new Font("宋体", 26));
Console.WriteLine(size.Width);输出结果是:
12.49984
97.50861
基本上是差不太多的。估计是考虑到字间距的原因吧。
所以,字数越多的时候,平均每个字的宽度越接近91.7mm这个值。
计算了一下,
Graphics tmpG = this.CreateGraphics();
tmpG.PageUnit = GraphicsUnit.Millimeter;
SizeF size = tmpG.MeasureString("国", new Font("宋体",26) );
这样11毫米多一点,用打印机打出来才7毫米,这样差太多啦....
新建一个word文件,默认A4纸,宽度21厘米。
输入一串文字,设置为一号字,将左右页边距设置为0,自己看看一行能有多少个字?平均每个字有多宽,除一下就出来了。
我查了,一行是22个字。每个字宽度为21/22厘米
我想表达的意思是MeasureString得出的11.9244375是基本精确的。不要一直纠结与你拿尺子量出来的7毫米。
不过如果要计算一段文字打印出来时,大致会有多宽,好计算排版定位,用这个MeasureString就足够了。