日期:2014-05-18  浏览次数:20990 次

请教 如何计算 字体 的毫米?
string str = "国";

知道这个字符串输出时的字体,与大小,是否加粗等等,可以获取到font对象.


我想获取 “国” 字打印出来实际的毫米是多少,请教?






/*
打印一个一号字, 下面这种解决方案算出来的数是: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);
------解决方案--------------------
9号字,好像就是9磅吧。百度一下"字号 毫米"


缇的解释
所有 Visual Basic 的移动、调整大小和图形绘制语句,根据缺省规定,使用缇为单位。缇是打印机的一磅的 1/20(1,440 缇等于一英寸;567 缇等于一厘米)。这些测量值指示对象打印后的大小。屏幕上的物理实际距离根据监视器的大小变化。“改变对象的坐标系统”中描述了如何选择缇以外的单位。


------解决方案--------------------
/*
打印一个一号字, 下面这种解决方案算出来的数是:11.9244375 , 但用尺子实际量的话,大约在7毫米左右,
不清楚如何换算 ???
*/

一个字来量尺寸是不准确的,10个字10个字的量吧。(边框也要算的。)

------解决方案--------------------
一号字体26磅,26*20/56.7=9.17毫米
参照
http://hi.baidu.com/l408890892/blog/item/c71d37cefa6e0d1c00e928e3.html

C# code

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);

------解决方案--------------------
MeasureString这个方法在计算时可能是字的大小+字间距+段前段后的间距。
所以,字数越多的时候,平均每个字的宽度越接近91.7mm这个值。
------解决方案--------------------
大屏幕 小屏幕,同样的字体大小,显示的实际大小不一样
------解决方案--------------------
要算边距的啊,大哥,干吗一直纠结与7毫米呢。

你可以自己做一个简单的试验。
新建一个word文件,默认A4纸,宽度21厘米。
输入一串文字,设置为一号字,将左右页边距设置为0,自己看看一行能有多少个字?平均每个字有多宽,除一下就出来了。


我查了,一行是22个字。每个字宽度为21/22厘米



------解决方案--------------------
探讨

字体不光有几号字,几号字,还可以直接输入数字……

------解决方案--------------------
不知道你最终需求是什么?目的是什么?
不过如果要计算一段文字打印出来时,大致会有多宽,好计算排版定位,用这个MeasureString就足够了。