DC 텍스트 출력 폰트 FONT

MFC 2019. 3. 17. 11:27 Posted by 쫀다


CFont 클래스를 이용한 출력


WM_PAINT 메세지 핸들러 등록


void C클래스View::OnPaint()

{

CPaintDC dc(this); 


TCHAR szBuffer[128];

ZeroMemory(szBuffer, 128);

CFont font;

font.CreateFont(

-MulDiv(9, dc.GetDeviceCaps(LOGPIXELSY), 72),

0,

0,

0,

FW_NORMAL,

FALSE,

FALSE,

0,

HANGEUL_CHARSET,

OUT_DEFAULT_PRECIS,

CLIP_DEFAULT_PRECIS,

DEFAULT_QUALITY,

DEFAULT_PITCH | FF_DONTCARE,

_T("궁서")

);


_stprintf_s(szBuffer, _T("%s"), _T("CFont 클래스를 이용한 출력"));

dc.SelectObject(&font);

dc.TextOut(20, 20, szBuffer, _tcslen(szBuffer));


_stprintf_s(szBuffer, _T("%s"), _T("시스템폰트를 이용한 출력"));

dc.SelectStockObject(SYSTEM_FONT);

dc.SetBkColor(RGB(0, 0, 100));

dc.SetTextColor(RGB(255, 255, 255));


dc.TextOut(20, 40, szBuffer, _tcslen(szBuffer));


font.DeleteObject();

}




LOGFONT를 이용한 문자 출력


새 함수 추가 PrintText


void CTextFontTestView::PrintText(CDC *pDC)

{

// TODO: 여기에 구현 코드 추가.

LOGFONT lf;

lf.lfHeight = -MulDiv(9, pDC->GetDeviceCaps(LOGPIXELSY), 72);

lf.lfWidth = 0;

lf.lfEscapement = 0;

lf.lfOrientation = 0;

lf.lfWeight = FW_NORMAL;

lf.lfItalic = FALSE;

lf.lfUnderline = FALSE;

lf.lfStrikeOut = 0;

lf.lfCharSet = HANGEUL_CHARSET;

lf.lfOutPrecision = OUT_DEFAULT_PRECIS;

lf.lfClipPrecision = CLIP_DEFAULT_PRECIS;

lf.lfQuality = DEFAULT_QUALITY;

lf.lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE;

_stprintf_s(lf.lfFaceName, _T("%s"), _T("굴림"));


CFont* pNewFont = new CFont;

CFont* pOldFont = NULL;


pNewFont->CreateFontIndirect(&lf);

pOldFont = pDC->SelectObject(pNewFont);


pDC->SetBkMode(OPAQUE);

pDC->SetBkColor(::GetSysColor(COLOR_ACTIVEBORDER));


pDC->SetTextColor(RGB(255, 255, 255));

pDC->TextOut(20, 70, _T("LOGFONT를 이용한 문자 출력"));


pDC->SetBkMode(TRANSPARENT);

pDC->SetTextColor(::GetSysColor(COLOR_GRAYTEXT));

pDC->TextOut(19, 69, _T("LOGFONT를 이용한 문자 출력"));


pDC->SelectObject(pOldFont);

delete pNewFont;

}