2017-02-14 20 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

にlf.lfHeightを設定しますか? – IInspectable

+0

私たちのツールでは、myVariableFontHeight'には90という値がありました。私がそれを設定したら、一般的なテキストエディタのようなフォントサイズを使いたいと思います。しかし、このvarはコード内で複数使用されているので、論理を破り、myFontSizeで計算することは望ましくありません。 – alex555

答えて

1

これはMFCのソースコードです。それはドキュメントにあります。 CFont :: CreatePointFontIndirectのオンラインドキュメントの最初の行は、状態:

この関数は、LOGFONTの lfHeight部材が点 なく、デバイス単位の割に解釈されることを除いてCreateFontIndirectと同じです。あなたは10ポイントのフォントを作成する場合

だから、あなたはどのような問題が本当に解決しようとしている100

関連する問題