c# – 测量字符串就像在html上一样吗?

我有确切的字符串:123 ..

我想知道它的长度是什么,好像它是在Html页面上(作为SPAN)

font-name:arial
font-size:16px;

我做了一个实验:

http://jsbin.com/axezib/edit#preview

所以

<span style="font-family:arial;border:solid 1px red;display:inline-block;font-size:16px;">123..</span>

呈现为:

及其属性:

当然 *
  {
    填充:0像素;边缘:0像素;
  }

你可以看到它的宽度是35,高度= 19. (让我们忽略边界…)

但是我有这个代码应该(或不)告诉我相同的结果:

void Main( )
      {
     string input = "123..";
     FontFamily fontFamily = new FontFamily("Arial");
     Font testFont = new  Font(   fontFamily,   16, FontStyle.Regular,   GraphicsUnit.Pixel);
     Size s = TextRenderer.MeasureText(input, testFont);
     Console.WriteLine("Size: height " + s.Height + ", width " + s.Width);
     Console.ReadLine();
      }

但结果是:

我在这里想念的是什么?

谢谢 :-)

编辑

re-editing之后通过添加CSS RESET的html代码 – 代码在所有4个浏览器中完全呈现.
所以问题仍然存在 – 为什么c#没有给我显示相同的结果

解决方法:

看起来好像是在尝试比较使用默认Windows字体渲染(以及系统上默认的任何消除锯齿,ClearType设置等)渲染的字符串的大小,并将其与Windows上的浏览器进行的渲染进行比较.或者可能没有自己的字体渲染引擎.据我所知,Gecko(Firefox)和Webkit(Chrome,Safari)实现了自己的字体渲染,因此可以在不同平台上一致地呈现HTML / CSS.

所以基本上,即使你可以让你的C#代码同意,结果也是毫无意义的,因为你在比较苹果和橘子!请参阅this article中的“当前实施”.

上一篇:java – 快速移动鼠标时防止虚线


下一篇:c# – 如何在WPF自定义Adorner中使用Line排列Thumb