2009-01-16 118 views
23

我有一個這樣的字符串:如何將字符串長度轉換爲像素單位?

string s = "This is my string"; 

我創建一個Telerik的報告,我需要定義一個textbox這是我的字符串的寬度。然而,尺寸屬性需要設置爲單位(像素,點,英寸等)。我怎樣才能把我的字符串長度轉換成像素,這樣我就可以設置寬度了?

編輯:我試圖獲得對圖形對象的引用,但是這是在繼承自Telerik.Reporting.Report的類中完成的。

回答

52

,不使用控制或形式:

using (System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(new Bitmap(1, 1))) 
{ 
    SizeF size = graphics.MeasureString("Hello there", new Font("Segoe UI", 11, FontStyle.Regular, GraphicsUnit.Point)); 
} 

或者在VB.Net:

Using graphics As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(New Bitmap(1, 1)) 
    Dim size As SizeF = graphics.MeasureString("Hello there", New Font("Segoe UI", 11, FontStyle.Regular, GraphicsUnit.Point)) 
End Using 
+2

似乎我認爲MeasureString應該是一種靜態方法。 – Kibbee 2009-01-16 20:56:53

+1

@Kibbee`MeasureString`需要一個`Graphics`,因爲它考慮到了當前的圖形轉換。 – 2012-05-14 10:25:51

3

您可以使用MeasureString()方法創建圖形對象的實例。但是你需要傳遞它的字體名稱,字體大小和其他信息。

+0

我有字體名稱,大小等我已經看過MeasureString方法,但無法弄清楚如何創建一個圖形對象引用。我沒有形式或控制,我只是想在課堂上弄清楚這一點。 – ScottG 2009-01-16 20:44:00

3

也取決於字體。字符串長度不夠。

15
Size textSize = TextRenderer.MeasureText("How long am I?", font); 
3

在這種情況下,我通常使用一個骯髒的,但簡單的方法:

  • 我加了一個看不見的Label它的AutoSize財產是true - 骯髒的工作 - 。
  • 當我想爲特定字符串設置Width時,我將它設置爲Label.Text
  • LabelWidth會給我正確的價值。
相關問題