我用以下方法显示出来的字体,好象不是十分正确,感觉和很多字体显示软件显示的效果不完全相同,所以我的问题是,怎样写代码才能正确显示字体的样式:
        
         memset(&m_LogFontCurrent, 0, sizeof(LOGFONT));
m_LogFontCurrent.lfHeight = 20;
m_LogFontCurrent.lfWidth = 10;
m_LogFontCurrent.lfEscapement = 0;
m_LogFontCurrent.lfOrientation = 0;
m_LogFontCurrent.lfWeight = FW_NORMAL;
m_LogFontCurrent.lfItalic = FALSE;
m_LogFontCurrent.lfUnderline = FALSE;
m_LogFontCurrent.lfStrikeOut = FALSE;
m_LogFontCurrent.lfCharSet = ANSI_CHARSET;
m_LogFontCurrent.lfOutPrecision = OUT_STROKE_PRECIS;
m_LogFontCurrent.lfClipPrecision = CLIP_STROKE_PRECIS;
m_LogFontCurrent.lfQuality = DRAFT_QUALITY;
m_LogFontCurrent.lfPitchAndFamily = VARIABLE_PITCH | FF_MODERN;
strcpy(m_LogFontCurrent.lfFaceName, "字体名称");         CFont font, *pOldFont;
if(!font.CreateFontIndirect(pFontInfo))
return;
pOldFont = (CFont *)pDC->SelectObject(&font);
         int iOldBkMode = pDC->SetBkMode(TRANSPARENT); pDC->DrawText("ABCDabcd", strlen("ABCDabcd"), &rcRect, DT_CENTER|DT_SINGLELINE|DT_VCENTER); pDC->SetBkMode(iOldBkMode);
pDC->SelectObject(pOldFont);
font.DeleteObject();         以上代码我不知道还缺什么没做,但显示效果和商业软件显示出来的对比还是不太一样,期待各位大侠的指教!!!

解决方案 »

  1.   

    不好意思, pFontInfo等于 &LogFontCurrent
      

  2.   

    m_LogFontCurrent.lfHeight = MulDiv(20, GetDeviceCaps(hdc, LOGPIXELSX), 72); //应随分辨率调整大小
    m_LogFontCurrent.lfWidth = 0;
    m_LogFontCurrent.lfEscapement = 0;
    m_LogFontCurrent.lfOrientation = 0;
    m_LogFontCurrent.lfWeight = FW_NORMAL;
    m_LogFontCurrent.lfItalic = FALSE;
    m_LogFontCurrent.lfUnderline = FALSE;
    m_LogFontCurrent.lfStrikeOut = FALSE;
    m_LogFontCurrent.lfCharSet = DEFAULT_CHARSET; //尽量使用默认字符集
    m_LogFontCurrent.lfOutPrecision = OUT_DEFAULT_PRECIS; //
    m_LogFontCurrent.lfClipPrecision = CLIP_DEFAULT_PRECIS; //
    m_LogFontCurrent.lfQuality = DEFAULT_QUALITY; //DRAFT_QUALITY是指草稿质量
    m_LogFontCurrent.lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE; //
    strcpy(m_LogFontCurrent.lfFaceName, "字体名称");