2009-12-22 55 views
0

我將SVG導出支持添加到使用MFC構建的舊應用程序中,並使用普通的舊GDI。由於SVG 1.1不支持文本換行,我不得不手動執行此操作。如何獲得GDI HFONT的線高?

該應用程序爲我提供了一個CFont實例(其中包含一個HFONT)。我可以使用CFont::GetTextExtentPoint()來計算一段文本的寬度,但我還沒有發現如何獲取字體的行高。

如何獲取字體的行高? 或者CFont::GetTextExtentPoint()總是返回Y座標中的線高(而不是文本的緊貼邊框的實際高度)?

回答

2

我想我有一個可能的答案:

CDC desktopDC; 
desktopDC.Attach(::GetDC(0)); 
desktopDC.SelecTObject(&font); 

::TEXTMETRIC metrics; 
desktopDC.GetTextMetrics(&metrics); 

int lineHeight = metrics.tmHeight + metrics.tmExternalLeading; 

這是一個有點麻煩,所以如果有一個更短的,更明顯的解決方案(或者,如果任何人都可以證實,CFont::GetTextExtentPoint()爲我提供了實際的行高)我很樂意聽到它仍然;)

0

看到答案我給了this question。這個問題關於文本寬度,但你也可以獲得文本高度。

+0

對不起,這不是我要找的。我需要行高度:從一行到下一行的偏移量,它是靜態文本高度(不依賴於實際字符串)加上行之間的間距。 – Cygon 2009-12-23 08:59:51