FAQ:WinAPI VCPP:сменить шрифт контекста устройства

Материал из Весельчак У
Перейти к: навигация, поиск

Как сменить шрифт при выводе текста на CDC?

//создаём свой шрифт
CFont font; 
LOGFONT logfont;
 
memset(&logfont, 0, sizeof(LOGFONT));
logfont.lfWeight = FW_NORMAL;
logfont.lfHeight = -MulDiv(14, pDC->GetDeviceCaps(LOGPIXELSY), 72);
logfont.lfCharSet = RUSSIAN_CHARSET;
logfont.lfUnderline = FALSE;
logfont.lfItalic = FALSE;
logfont.lfOutPrecision = OUT_TT_PRECIS;
logfont.lfPitchAndFamily = FF_ROMAN;
logfont.lfQuality = DEFAULT_QUALITY;
strcpy(logfont.lfFaceName, "Arial");
font.CreateFontIndirect(&logfont);
 
//сохраняем адрес старого шрифта контекста
CFont* pOldFont = pDC->SelectObject(&font);
 
//выводим цветной текст с прозрачным фоном
pDC->SetTextColor(RGB(120, 100, 255));
pDC->SetBkMode(TRANSPARENT);
 
pDC->TextOut(0, 0, "Шрифт Arial", 12/*символов*/);
 
//после использования твоего возвращаем старый на место
pDC->SelectObject(&pOldFont);