2014-10-31 94 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

相關問題