2014-10-31 96 views
0

我使用的方法TextRenderer.MeasureText(用户名,新的字体(“宋体”,12))。宽度用于验证用户名的大小,它显示了我的本地机器和服务器上的相同用户名的不同值。另外在单元测试中,它计算的宽度要比本地机器上的Web应用程序的宽度要宽(与在服务器上计算的宽度相同)。我认为这是因为我的本地机器上的IIS设置不同,但令我感到困惑。我认为在我的本地机器上显示的值是错误的,因为它太高(180像素)比允许的140像素。ASP.NET MVC System.Windows.Forms.TextRenderer.MeasureText是给在不同机器上的不同结果

更新: 当我使用的设备上下文中给出了相同的结果,不同的宽度在不同的机器和在同一台机器上的单元测试和网络应用程序:

  Bitmap B = new Bitmap(16, 16); // Whatever, we only need a Graphics 
      Graphics G = Graphics.FromImage(B); 
      int verdanaWidth = TextRenderer.MeasureText(G, username, new Font("Verdana", 12)).Width; 

宽度上的单元测试不同的,并且在网络应用程序,因为图形对象具有不同的分辨率:

  float dpiX = G.DpiX; // 96 in unit test, 120 in web app on local machine, 96 on server 
      float dpiY = G.DpiY; // 96 in unit test, 120 in web app on local machine, 96 on server 

回答

0

您需要使用一个接受设备上下文 MeasureText方法的重写(如像素宽度是装置德下垂)。

有关更多信息,请参阅This SO question

+0

当我使用设备上下文时,它给了我相同的结果: – Petr 2014-11-10 11:16:02

相关问题