我用以下方法显示出来的字体,好象不是十分正确,感觉和很多字体显示软件显示的效果不完全相同,所以我的问题是,怎样写代码才能正确显示字体的样式:
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(); 以上代码我不知道还缺什么没做,但显示效果和商业软件显示出来的对比还是不太一样,期待各位大侠的指教!!!
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(); 以上代码我不知道还缺什么没做,但显示效果和商业软件显示出来的对比还是不太一样,期待各位大侠的指教!!!
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, "字体名称");