用Graphics.MeasureString得到的宽度比实际的要宽
使用下边帖子的办法会得到比较正确的宽度,但是开始比实际的宽
http://kb.csdn.net/.net/Articles/200509/b6b34174-bb5a-4d9c-8625-08a5b75056d1.html有没有其他办法?

解决方案 »

  1.   

    .NET 2.0 里面没有问题private void TestForm_Paint(object sender, PaintEventArgs e)
    {
    Graphics g = e.Graphics;
    string text = "Hello, world... Showing MeasureString and MeasureDisplayStringWidth"; PointF pf = new PointF(10f, 10f);
    StringFormat format = new StringFormat();// StringFormat.GenericTypographic;
    SizeF sf = g.MeasureString(text, this.Font, pf, format); g.DrawRectangle(SystemPens.ActiveCaption,
    (int)pf.X, (int)pf.Y, (int)sf.Width, (int)sf.Height); g.DrawString(text, this.Font, SystemBrushes.ActiveCaptionText, pf, format);
    }
      

  2.   

    解决问题了,原因如下
    1.例子中返回的值不太对
    2.那个什么Ranges的函数返回的值没有充分利用。
      

  3.   

    看看这个解释或许有帮助http://groups.google.com/group/microsoft.public.dotnet.framework.windowsforms/browse_frm/thread/2db8a767f3a92756/970225b5c82466d3?tvc=1&q=MeasureString+Bug&hl=zh-CN#970225b5c82466d3但是在我win2003上无论大小字体却都是正确的(没有多余的空格)
      

  4.   

    to tiaoci(我挑刺,我快乐)
    你的第一个回帖中的源代码至少有两个不完善的地方,从而使你
    认为自己的代码是work的。把字符串后面的空格去掉,然后你再运行看看。
      

  5.   

    我的字符串后面没有空格啊你是说这个字符串吧:"Hello, world... Showing MeasureString and MeasureDisplayStringWidth"