我使用的是固定尺寸的字體(例如:「Courier New」)。當我通過調用CFont :: CreateFont函數初始化CFont對象時,我只想指定字體高度。如何從CFont對象中獲取自動計算的字體寬度?
CFont Font;
Font.CreateFont(nFontHeight, 0, 0, 0, 0, false, false,
0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
FIXED_PITCH|FF_MODERN, _T("Courier New"));
根據文檔,字體寬度將自動計算。我需要爲其他一些計算自動計算的值。
GetLogFont函數是沒用的,因爲看起來CFont只包含我們給出的值,即width = 0,並且它僅在第一次使用時計算該值。 (請檢查Microsoft documentation)
另一個選擇是使用CDC :: GetTextExtent使用單個字符。但在這種情況下,即使在高處也可以看到一些細微的差異。例如,當我給-32作爲高度時,GetTextExtent爲y值返回33。
有沒有什麼辦法可以得到正確的計算寬度?
你爲什麼要給它一個負高度? – RedX 2011-05-19 13:54:26
檢查CreateFont的文檔。大於0的字體高度與字體的「單元格高度」的高度相匹配,而小於0的高度將其與「字符高度」相匹配。 – MikMik 2011-05-19 14:19:03