2010-09-13 68 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高度无法确定。