2011-06-03 61 views
-1

我有以下代碼在我的本地計算機(Win 7,.NET 4)上工作,但似乎無法在服務器上工作。我想以編程方式測量文本長度使用GDI + Graphics.MeasureString問題以編程方式測量文本長度問題

任何人都可以請幫忙嗎?

private float GetTextSize(string text, float textSize) 
{ 
    using (Bitmap bmp = new Bitmap(1, 1)) 
    { 
     bmp.SetResolution(96, 96); 

     using (Graphics g = Graphics.FromImage(bmp)) 
     { 
      using (System.Drawing.Font font = new System.Drawing.Font(fontName, textSize)) 
      { 
       return g.MeasureString(text, font).Width; 
      } 
     } 
    } 
} 

我會考慮任何更好的解決方案,如果有的話。

更新:

如何檢測機器上是否有字體類型?

更新2:

爲什麼我的問題得到負分?任何人都可以請投票贊成。

在此先感謝!

+9

你能定義「不工作」嗎?也許字體不存在? – 2011-06-03 10:57:15

+0

什麼是'fontName'? – Dyppl 2011-06-03 10:59:14

+1

@rudi_visser:這意味着它沒有按預期執行。 「還有什麼?」©:) – 2011-06-03 11:28:55

回答

0

問題在於即使對於具有相同數字字符的文本(例如文本),它也將返回不同的文本長度。對於某些字體類型,1234比abcd長。我以前的邏輯是比較每個文本的字符數量,並將最長的文本傳遞給方法,根據該原因,這是不正確的。

解決方案是爲每個文本調用方法,並且從該方法返回的文本長度可靠地進行比較。