我用Graphics.MeasureString()测出来的长度误差太大了,象str="asdhfjashidfasdfkhsdiau";画出来误差大约有20个象素。有什么方法可以很精确的得到画出来的string象素长度

解决方案 »

  1.   

    使用TextRenderer.MesureText方法来测量。
      

  2.   

    下面的代码示例说明如何使用 MeasureText 方法。若要运行此示例,请将该代码粘贴到一个 Windows 窗体中,并从该窗体的 Paint 事件处理程序中调用 MeasureText1 ,将 e 作为 PaintEventArgs 传递。private void MeasureText1(PaintEventArgs e)
    {
        String text1 = "Measure this text";
        Font arialBold = new Font("Arial", 12.0F);
        Size textSize = TextRenderer.MeasureText(text1, arialBold);
        TextRenderer.DrawText(e.Graphics, text1, arialBold, 
            new Rectangle(new Point(10, 10), textSize), Color.Red);  
    }
      

  3.   

    Graphics.MeasureString()
    这个方法一直是我画图使用的
    没发现那么大的误差TextRenderer.MesureText是2.0新增的~~~~
      

  4.   

    to:hbxtlhx(平民百姓-自已动手,丰衣足食) ( ) 信誉:112 
    我的vs2003怎么找不到TextRenderer的命名空间?
      

  5.   

    TextRenderer确实是2。0的方法。
      

  6.   

    如果1.1里可以很好的来测量的话,就没有必要在2.0里新增方法了。所以,要么想办法使用API来测量,要么使用新的版本。
      

  7.   

    测出来应该是很准的。
    不准可能是你没有设置好FONT SIZE或者逻辑坐标的单位。