2017-02-14 70 views
0

我試圖覈實爲例CFont高度和尺寸之間的依賴關係:從C++中的大小計算字體高度?

int main(int argc, char* argv[]) 
{ 
    int myVariableFontHeight = 90; 

    CFont * font = new CFont(); 

    LOGFONT lf; 
    memset(&lf,0,sizeof(LOGFONT)); 
    lf.lfHeight = myVariableFontHeight; 
    lf.lfWeight =FW_BOLD; 
    lf.lfCharSet = 1; 
    _tcscpy_s(lf.lfFaceName , "Arial Unicode MS");  
    font->CreatePointFontIndirect(&lf); 

    font->GetLogFont(&lf); 
    int fontHeight = lf.lfHeight; 

    HWND console = GetConsoleWindow(); 
    HDC dc = GetDC(console); 

    int nFontSize = -::MulDiv(lf.lfHeight, 72, ::GetDeviceCaps(dc, LOGPIXELSY)); 

    delete font; 

    return 0; 
} 

而結果總是nFontSize = myVariableFontHeight/10。這是什麼因素10?它從哪裏來?我可以從給定尺寸計算字體高度嗎?

謝謝

+0

了什麼問題是你真的想解決? – IInspectable

+0

在我們的工具myVariableFontHeight有一個固定值90.我做了它可配置後,我想使用像普通文本編輯器中的字體大小。但是這個var在代碼中被多次使用,所以我不想打破邏輯並用myFontSize進行計算。 – alex555

回答

1

這是在MFC源代碼。它在文檔中。爲的CFont :: CreatePointFontIndirect在線文檔的第一行規定:

此功能是一樣的CreateFontIndirect除了LOGFONT的 lfHeight成員中的一個點 而不使用設備單位的十分之一進行解釋。

所以,如果你想創建一個10磅的字體,設置lf.lfHeight爲100