string str = "国";知道这个字符串输出时的字体,与大小,是否加粗等等,可以获取到font对象.
我想获取 “国” 字打印出来实际的毫米是多少,请教?
/*
打印一个一号字, 下面这种解决方案算出来的数是:11.9244375 , 但用尺子实际量的话,大约在7毫米左右,
不清楚如何换算 ???
*/            // 计算字体宽度
            Graphics tmpG = this.CreateGraphics();
            SizeF size = tmpG.MeasureString("国", this.lblContent.Font);
            float StringWidth = size.Width;

解决方案 »

  1.   

    // 计算字体宽度
      Graphics tmpG = this.CreateGraphics();
      SizeF size = tmpG.MeasureString("国", this.lblContent.Font);
      float StringWidth = size.Width;你不是已经写了宽度吗?
      

  2.   

    //算字符的所占像素长度
     Font arialBold = new Font("SimSun", 9.0F);
    Size textSize = TextRenderer.MeasureText(StringStr, arialBold);           
      

  3.   


    1. 想要的是字的宽度与高度,而非像素.
    2. 结果是int型的,毫无精确而言.
      

  4.   

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

  5.   

    一号字体26磅,26*20/56.7=9.17毫米
    参照
    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
    基本上是差不太多的。估计是考虑到字间距的原因吧。
      

  6.   

    MeasureString这个方法在计算时可能是字的大小+字间距+段前段后的间距。
    所以,字数越多的时候,平均每个字的宽度越接近91.7mm这个值。
      

  7.   


    计算了一下,
    Graphics tmpG = this.CreateGraphics();
    tmpG.PageUnit = GraphicsUnit.Millimeter;
    SizeF size = tmpG.MeasureString("国", new Font("宋体",26) );
    这样11毫米多一点,用打印机打出来才7毫米,这样差太多啦....
      

  8.   

    要算边距的啊,大哥,干吗一直纠结与7毫米呢。你可以自己做一个简单的试验。
    新建一个word文件,默认A4纸,宽度21厘米。
    输入一串文字,设置为一号字,将左右页边距设置为0,自己看看一行能有多少个字?平均每个字有多宽,除一下就出来了。
    我查了,一行是22个字。每个字宽度为21/22厘米
      

  9.   

    我想表达的意思不是说要你一个一个的测试,
    我想表达的意思是MeasureString得出的11.9244375是基本精确的。不要一直纠结与你拿尺子量出来的7毫米。
      

  10.   

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