2010-09-13 23 views

回答

0

雖然你的問題清楚地表明瞭x高度,但所有的答案都是關於身高的,這並不是一回事。 MeasureStringMeasureCharacterRanges不提供x高度。

無論如何,我的答案是:不,x-height在.NET 2.0中不可用(以任何方式)。

+0

儘管這被標記爲答案,但它是錯誤的。請參閱下面的答案。 – Elmue 2014-07-28 21:14:48

0

您正在尋找這樣的:Font.Height或也許這:How to: Obtain Font Metrics

+0

我正在尋找專門[x-height](http://en.wikipedia.org/wiki/X-height)。 'System.Windows.Media'包含所需值[Typeface.XHeight](http://msdn.microsoft.com/en-us/library/system.windows.media.typeface.xheight%28v=VS.100%29 .aspx) – Marius 2010-09-13 17:16:54

0

或者,您在尋找一種方式來計算與字體渲染文本的高度?在這種情況下,您可以使用TextRenderer類和MeasureText函數。這可從.NET 2.0獲得。

0

如果您可能使用System.Drawing命名空間,則可能需要使用Graphics.MeasureString()方法。否則,就像喬希說的那樣。

您的問題可能不夠詳細,以獲得進一步的幫助。

EDIT#1

Graphics.MeasureString()方法的返回類型是System.Drawing.SizeF。這SizeF類提供了三個屬性,其中你有這兩個:

  1. Height;
  2. Width

如果這不是你想要的,他們我不明白你的觀點。如果是這樣,我很抱歉。

我希望這有助於反正! =)

+0

或使用TextRenderer類。在這種情況下,你不需要一個Graphics對象的實例。 – Patrick 2010-09-13 13:54:38

+0

@Patrick:或者使用TextRenderer類也可以。我總是忘記這門課。我個人並不需要使用這兩種工具,而是使用了一個以圖形模式工作的.NET PDF庫,所以我通過'MeasureString'方法記住了這一點。謝謝(你的)信息! =) – 2010-09-13 14:42:38

+0

我將有權訪問Graphics對象。在最壞的情況下,我將不得不使用「MeasureString」或「MeasureCharacterRanges」來計算'x'的高度。 – Marius 2010-09-13 17:18:30

0

這裏的所有答案都是錯誤的。 你可以在.NET 2.0中做到這一點,但你需要PInvoke。

您必須調用GetGlyphOutline() API並傳遞一個字符:小寫字母「x」。 從gmBlackBoxYgmptGlyphOrigin.y您可以計算x高度。這將需要在設備上下文(DC)中選擇TrueType或Vector字體。

警告:請注意,並非所有字體都使用小寫字母,並且某些字體甚至沒有定義「x」字符。在這種情況下,x高度無法確定。