다음을 통해 공유


CFont 클래스

Windows GDI(그래픽 디바이스 인터페이스) 글꼴을 캡슐화하고 글꼴 조작을 위한 멤버 함수를 제공합니다.

구문

class CFont : public CGdiObject

멤버

공용 생성자

속성 설명
CFont::CFont CFont 개체를 생성합니다.

공용 메서드

이름 설명
CFont::CreateFont 지정된 특성을 사용하여 CFont 초기화합니다.
CFont::CreateFontIndirect 구조체에 CFont 지정된 특성을 사용하여 개체를 LOGFONT 초기화합니다.
CFont::CreatePointFont 지정된 높이를 CFont 사용하여 포인트의 10분의 1로 측정된 서체를 초기화합니다.
CFont::CreatePointFontIndirect CreateFontIndirect 글꼴 높이가 논리 단위가 아닌 점의 10분의 1로 측정된다는 점을 제외하고 동일합니다.
CFont::FromHandle WindowsHFONT가 제공되면 개체에 대한 CFont 포인터를 반환합니다.
CFont::GetLogFont 개체에 LOGFONT 연결된 논리 글꼴에 대한 정보로 CFont 채웁니다.

Public 연산자

이름 설명
CFont::operator HFONT 개체에 연결된 Windows GDI 글꼴 핸들을 CFont 반환합니다.

설명

개체를 CFont 사용하려면 개체를 CFont 구성하고 , 또는 CreatePointFontCreatePointFontIndirect개체의 멤버 함수를 사용하여 Windows 글꼴CreateFontCreateFontIndirect을 연결하여 글꼴을 조작합니다.

CreatePointFontIndirect 함수는 CreatePointFont 대개 포인트 크기에서 논리 단위로 글꼴 높이를 자동으로 변환하는 것보다 CreateFontCreateFontIndirect 쉽게 사용할 수 있습니다.

자세한 내용은 그래픽 개체를 CFont참조 하세요.

상속 계층 구조

CObject

CGdiObject

CFont

요구 사항

헤더afxwin.h:

CFont::CFont

CFont 개체를 생성합니다.

CFont();

설명

결과 개체를 사용하거나 , CreateFontIndirectCreatePointFont또는 CreatePointFontIndirect 사용하려면 먼저 초기화CreateFont해야 합니다.

예시

CFont font;

CFont::CreateFont

지정된 특성을 사용하여 CFont 개체를 초기화합니다.

BOOL CreateFont(
    int nHeight,
    int nWidth,
    int nEscapement,
    int nOrientation,
    int nWeight,
    BYTE bItalic,
    BYTE bUnderline,
    BYTE cStrikeOut,
    BYTE nCharSet,
    BYTE nOutPrecision,
    BYTE nClipPrecision,
    BYTE nQuality,
    BYTE nPitchAndFamily,
    LPCTSTR lpszFacename);

매개 변수

nHeight
글꼴의 원하는 높이(논리 단위)를 지정합니다. 설명은 lfHeight Windows SDK의 구조체 멤버 LOGFONT를 참조하세요. 절대값 nHeight 은 변환된 후 16,384 디바이스 단위를 초과해서는 안 됩니다. 모든 높이 비교에서 글꼴 매퍼는 요청된 크기를 초과하지 않는 가장 큰 글꼴을 찾거나 모든 글꼴이 요청된 크기를 초과하는 경우 가장 작은 글꼴을 찾습니다.

nWidth
글꼴에 있는 문자의 평균 너비(논리 단위)를 지정합니다. 0이면 nWidth 디바이스의 가로 세로 비율이 사용 가능한 글꼴의 디지털화 가로 세로 비율과 일치하여 가장 가까운 일치 항목을 찾습니다. 이 비율은 차이의 절대값에 따라 결정됩니다.

nEscapement
이스케이프 벡터와 디스플레이 화면의 x축 사이의 각도(0.1도 단위)를 지정합니다. 이스케이프 벡터는 줄에 있는 첫 번째 문자와 마지막 문자의 원점까지의 선입니다. 각도는 x축에서 시계 반대 방향으로 측정됩니다. lfEscapement 자세한 내용은 Windows SDK 구조 LOGFONT 체의 멤버를 참조하세요.

nOrientation
문자 기준선과 x축 사이의 각도(0.1도 단위)를 지정합니다. 각도는 y 방향이 다운된 좌표계의 경우 x축에서 시계 반대 방향으로 측정되며 y 방향이 위로 있는 좌표계의 경우 x축에서 시계 방향으로 측정됩니다.

nWeight
글꼴 두께(1000당 잉크 픽셀)를 지정합니다. lfWeight 자세한 내용은 Windows SDK 구조 LOGFONT 체의 멤버를 참조하세요. 설명된 값은 대략적인 값입니다. 실제 모양은 서체에 따라 달라집니다. 일부 글꼴에는 가중치만 FW_NORMALFW_REGULARFW_BOLD 있습니다. 지정된 경우 FW_DONTCARE 기본 가중치가 사용됩니다.

bItalic
글꼴이 기울임을 지정합니다.

bUnderline
글꼴에 밑줄이 그어지는지 여부를 지정합니다.

cStrikeOut
글꼴의 문자를 쳐낼지 여부를 지정합니다. 0이 아닌 값으로 설정된 경우 취소선 글꼴을 지정합니다.

nCharSet
글꼴의 문자 집합을 지정합니다. 값 목록에 대한 Windows SDK 구조체의 멤버 LOGFONT 를 확인 lfCharSet 합니다.

OEM 문자 집합은 시스템에 따라 다릅니다.

다른 문자 집합이 있는 글꼴이 시스템에 있을 수 있습니다. 알 수 없는 문자 집합이 있는 글꼴을 사용하는 애플리케이션은 해당 글꼴로 렌더링할 문자열을 번역하거나 해석하려고 시도해서는 안 됩니다. 대신 문자열을 출력 디바이스 드라이버에 직접 전달해야 합니다.

글꼴 매퍼는 값을 사용하지 DEFAULT_CHARSET 않습니다. 애플리케이션에서는 이 값을 사용하여 글꼴의 이름과 크기가 논리 글꼴을 완전히 설명할 수 있도록 할 수 있습니다. 지정된 이름의 글꼴이 없으면 문자 집합의 글꼴을 지정된 글꼴로 대체할 수 있습니다. 예기치 않은 결과를 방지하려면 애플리케이션에서 DEFAULT_CHARSET 이 값을 아끼고 사용해야 합니다.

nOutPrecision
원하는 출력 정밀도를 지정합니다. 출력 정밀도는 출력이 요청된 글꼴의 높이, 너비, 문자 방향, 이스케이프 및 피치와 얼마나 가깝게 일치해야 하는지를 정의합니다. lfOutPrecision 값 목록 및 자세한 내용은 Windows SDK 구조체의 멤버 LOGFONT 를 참조하세요.

nClipPrecision
원하는 클리핑 정밀도를 지정합니다. 클리핑 정밀도는 부분적으로 클리핑 영역 외부에 있는 문자를 클리핑하는 방법을 정의합니다. lfClipPrecision 값 목록은 Windows SDK 구조체의 멤버 LOGFONT 를 참조하세요.

포함된 읽기 전용 글꼴을 사용하려면 애플리케이션에서 지정 CLIP_ENCAPSULATE해야 합니다.

디바이스, TrueType 및 벡터 글꼴의 일관된 회전을 위해 애플리케이션은 비트 OR 연산자(|)를 사용하여 값을 다른 nClipPrecision 값과 결합 CLIP_LH_ANGLES 할 수 있습니다. 비트가 CLIP_LH_ANGLES 설정된 경우 모든 글꼴의 회전은 좌표계의 방향이 왼손인지 오른손인지에 따라 달라집니다. (좌표계의 방향에 대한 자세한 내용은 매개 변수에 대한 nOrientation 설명을 참조하세요.) 설정되지 않은 경우 CLIP_LH_ANGLES 디바이스 글꼴은 항상 시계 반대 방향으로 회전하지만 다른 글꼴의 회전은 좌표계의 방향에 따라 달라집니다.

nQuality
GDI가 논리 글꼴 특성을 실제 실제 글꼴의 특성과 일치시키려고 얼마나 신중하게 시도해야 하는지를 정의하는 글꼴의 출력 품질을 지정합니다. lfQuality 값 목록은 Windows SDK 구조체의 멤버 LOGFONT 를 참조하세요.

nPitchAndFamily
글꼴의 피치와 패밀리를 지정합니다. lfPitchAndFamily 값 목록 및 자세한 내용은 Windows SDK 구조체의 멤버 LOGFONT 를 참조하세요.

lpszFacename
글꼴의 서체 이름을 지정하는 null로 끝나는 문자열에 대한 A CString 또는 포인터입니다. 이 문자열의 길이는 30자를 초과하면 안됩니다. Windows EnumFontFamilies 함수를 사용하여 현재 사용 가능한 모든 글꼴을 열거할 수 있습니다. 이 NULL경우 lpszFacename GDI는 디바이스 독립적 서체를 사용합니다.

Return Value

성공하면 0이 아니고, 그렇지 않으면 0입니다.

설명

이후에는 모든 디바이스 컨텍스트의 글꼴로 글꼴을 선택할 수 있습니다.

함수는 CreateFont 새 Windows GDI 글꼴을 만들지 않습니다. GDI에서 사용할 수 있는 실제 글꼴에서 가장 가까운 일치 항목만 선택합니다.

애플리케이션은 논리 글꼴을 만들 때 대부분의 매개 변수에 대한 기본 설정을 사용할 수 있습니다. 항상 특정 값을 지정해야 하는 매개 변수는 다음과 같습니다 nHeightlpszFacename. lpszFacename 애플리케이션에서 설정하지 않은 경우 nHeight 생성되는 논리 글꼴은 디바이스에 따라 달라집니다.

함수 CDC::SelectObject 에서 CFontCreateFont 만든 개체를 완료하면 디바이스 컨텍스트에서 다른 글꼴을 선택한 다음 더 이상 필요하지 않은 개체를 CFont 삭제합니다.

예시

// The code fragment shows how to create a font object,
// select the font object into a DC (device context) for text
// drawing, and finally delete the font object.

// Initializes a CFont object with the specified characteristics.
CFont font;
VERIFY(font.CreateFont(
    12,                       // nHeight
    0,                        // nWidth
    0,                        // nEscapement
    0,                        // nOrientation
    FW_NORMAL,                // nWeight
    FALSE,                    // bItalic
    FALSE,                    // bUnderline
    0,                        // cStrikeOut
    ANSI_CHARSET,             // nCharSet
    OUT_DEFAULT_PRECIS,       // nOutPrecision
    CLIP_DEFAULT_PRECIS,      // nClipPrecision
    DEFAULT_QUALITY,          // nQuality
    DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
    _T("Arial")));            // lpszFacename

// Do something with the font just created...
CClientDC dc(this);
CFont *def_font = dc.SelectObject(&font);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);

// Done with the font.  Delete the font object.
font.DeleteObject();

CFont::CreateFontIndirect

구조체에 CFont 지정된 특성을 사용하여 개체를 LOGFONT초기화합니다.

BOOL CreateFontIndirect(const LOGFONT* lpLogFont);

매개 변수

lpLogFont
LOGFONT 논리 글꼴의 특성을 정의하는 구조를 가리킵니다.

Return Value

성공하면 0이 아니고, 그렇지 않으면 0입니다.

설명

이후에는 모든 디바이스의 현재 글꼴로 글꼴을 선택할 수 있습니다.

이 글꼴에는 구조체에 지정된 특성이 LOGFONT 있습니다. 멤버 함수를 사용하여 CDC::SelectObject 글꼴을 선택하면 GDI 글꼴 매퍼가 논리 글꼴을 기존 실제 글꼴과 일치시키려고 시도합니다. 글꼴 매퍼가 논리 글꼴에 대한 정확한 일치 항목을 찾지 못하는 경우 특성이 요청된 특성을 최대한 많이 일치하는 대체 글꼴을 제공합니다.

함수 CDC::SelectObject 에서 CreateFontIndirect 만든 개체가 CFont 더 이상 필요하지 않은 경우 디바이스 컨텍스트에서 다른 글꼴을 선택한 다음 더 이상 필요하지 않은 개체를 CFont 삭제합니다.

예시

// The code fragment shows how to create a font object,
// select the font object into a DC (device context) for text
// drawing, and finally delete the font object.

// Initializes a CFont object with the characteristics given
// in a LOGFONT structure.
CFont font;
LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT)); // zero out structure
lf.lfHeight = 12;                // request a 12-pixel-height font
_tcsncpy_s(lf.lfFaceName, LF_FACESIZE,
           _T("Arial"), 7);           // request a face name "Arial"
VERIFY(font.CreateFontIndirect(&lf)); // create the font

// Do something with the font just created...
CClientDC dc(this);
CFont *def_font = dc.SelectObject(&font);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);

// Done with the font. Delete the font object.
font.DeleteObject();

CFont::CreatePointFont

이 함수는 지정된 서체 및 점 크기의 글꼴을 만드는 간단한 방법을 제공합니다.

BOOL CreatePointFont(
    int nPointSize,
    LPCTSTR lpszFaceName,
    CDC* pDC = NULL);

매개 변수

nPointSize
요청된 글꼴 높이(포인트의 10분의 1)입니다. 예를 들어 120을 전달하여 12포인트 글꼴을 요청합니다.

lpszFaceName
글꼴의 서체 이름을 지정하는 null로 끝나는 문자열에 대한 A CString 또는 포인터입니다. 이 문자열의 길이는 30자를 초과하면 안됩니다. Windows EnumFontFamilies 함수를 사용하여 현재 사용 가능한 모든 글꼴을 열거할 수 있습니다. 이 NULL경우 lpszFaceName GDI는 디바이스 독립적 서체를 사용합니다.

pDC
높이를 CDC 논리 단위로 변환하는 데 사용할 개체에 nPointSize 대한 포인터입니다. 이 경우 NULL화면 디바이스 컨텍스트가 변환에 사용됩니다.

Return Value

성공하면 0이 아니고, 그렇지 않으면 0입니다.

설명

로 가리키는 pDCCDC 개체를 사용하여 높이 nPointSize 를 논리 단위로 자동으로 변환합니다.

함수에서 CFont 만든 개체를 CreatePointFont 완료하면 먼저 디바이스 컨텍스트에서 글꼴을 선택한 다음 개체를 삭제합니다 CFont .

예시

// The code fragment shows how to create a font object,
// select the font object into a DC (device context) for text
// drawing, and finally delete the font object.

CClientDC dc(this);

CFont font;
VERIFY(font.CreatePointFont(120, _T("Arial"), &dc));

// Do something with the font just created...
CFont *def_font = dc.SelectObject(&font);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);

// Done with the font. Delete the font object.
font.DeleteObject();

CFont::CreatePointFontIndirect

이 함수는 해당 멤버가 LOGFONT 디바이스 단위가 lfHeight 아닌 1/10 지점으로 해석된다는 점을 제외하고 동일합니다CreateFontIndirect.

BOOL CreatePointFontIndirect(
    const LOGFONT* lpLogFont,
    CDC* pDC = NULL);

매개 변수

lpLogFont
LOGFONT 논리 글꼴의 특성을 정의하는 구조를 가리킵니다. 구조체의 LOGFONT 멤버는 lfHeight 논리 단위가 아닌 점의 10분의 1로 측정됩니다. 예를 들어 12포인트 글꼴을 요청하려면 120으로 설정합니다 lfHeight .

pDC
높이를 CDC 논리 단위로 변환하는 데 사용할 개체에 lfHeight 대한 포인터입니다. 이 경우 NULL화면 디바이스 컨텍스트가 변환에 사용됩니다.

Return Value

성공하면 0이 아니고, 그렇지 않으면 0입니다.

설명

이 함수는 구조를 Windows에 lfHeight 전달 LOGFONT 하기 전에 가리키는 pDC 개체를 사용하여 CDC 높이를 논리 단위로 자동으로 변환합니다.

함수에서 CFont 만든 개체를 CreatePointFontIndirect 완료하면 먼저 디바이스 컨텍스트에서 글꼴을 선택한 다음 개체를 삭제합니다 CFont .

예시

// The code fragment shows how to create a font object,
// select the font object into a DC (device context) for text
// drawing, and finally delete the font object.
LOGFONT lf;

// clear out structure.
memset(&lf, 0, sizeof(LOGFONT));

// request a 12-pixel-height font
lf.lfHeight = 120;

// request a face name "Arial".
_tcsncpy_s(lf.lfFaceName, LF_FACESIZE, _T("Arial"), 7);

CClientDC dc(this);

CFont font;
VERIFY(font.CreatePointFontIndirect(&lf, &dc));

// Do something with the font just created...
CFont *def_font = dc.SelectObject(&font);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);

// Done with the font. Delete the font object.
font.DeleteObject();

CFont::FromHandle

Windows GDI 글꼴 개체에 CFont 대한 핸들이 HFONT 지정되면 개체에 대한 포인터를 반환합니다.

static CFont* PASCAL FromHandle(HFONT hFont);

매개 변수

hFont
HFONT Windows 글꼴에 대한 핸들입니다.

Return Value

성공하면 개체에 대한 포인터입니다 CFont . 그렇지 않으면 NULL.

설명

개체가 CFont 핸들에 아직 연결되지 않은 경우 임시 CFont 개체가 만들어지고 연결됩니다. 이 임시 CFont 개체는 다음에 애플리케이션이 이벤트 루프에서 유휴 시간을 가지며, 이때 모든 임시 그래픽 개체가 삭제될 때까지만 유효합니다. 또 다른 방법은 임시 개체가 하나의 창 메시지를 처리하는 동안에만 유효하다는 것입니다.

예시

// The code fragment shows how to create a font object using
// Windows API CreateFontIndirect(), convert the HFONT to a
// CFont* before selecting the font object into a DC (device
// context) for text drawing, and finally delete the font object.

// Initialize a CFont object with the characteristics given
// in a LOGFONT structure.
LOGFONT lf;

// clear out structure
memset(&lf, 0, sizeof(LOGFONT));
// request a 12-pixel-height font
lf.lfHeight = 12;
// request a face name "Arial"
_tcsncpy_s(lf.lfFaceName, LF_FACESIZE, _T("Arial"), 7);
// create the font
HFONT hfont = ::CreateFontIndirect(&lf);

// Convert the HFONT to CFont*.
CFont *pfont = CFont::FromHandle(hfont);

// Do something with the font just created...
CClientDC dc(this);
CFont *def_font = dc.SelectObject(pfont);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);

// Done with the font. Delete the font object.
::DeleteObject(hfont);

CFont::GetLogFont

에 대한 구조체의 복사본을 검색하려면 이 함수를 LOGFONT 호출합니다 CFont.

int GetLogFont(LOGFONT* pLogFont);

매개 변수

pLogFont
LOGFONT 글꼴 정보를 받을 구조체에 대한 포인터입니다.

Return Value

함수가 성공하면 0이 아니고, 그렇지 않으면 0입니다.

예시

// The code fragment shows how to retrieve a copy of the
// LOGFONT structure for a currently selected font of a window.

CFont *pFont = pWnd->GetFont();
if (NULL != pFont)
{
   LOGFONT lf;
   pFont->GetLogFont(&lf);
   TRACE(_T("Typeface name of font = %s\n"), lf.lfFaceName);
}

CFont::operator HFONT

이 연산자를 사용하여 개체에 연결된 글꼴의 Windows GDI 핸들을 CFont 가져옵니다.

operator HFONT() const;

Return Value

성공하면 연결된 CFont Windows GDI 글꼴 개체의 핸들입니다. 그렇지 않으면 NULL.

설명

이 연산자는 글꼴 및 텍스트CFont 의 변환에 자동으로 사용되므로 개체를 예상HFONT하는 함수에 전달할 CFont 수 있습니다.

그래픽 개체 사용에 대한 자세한 내용은 Windows SDK의 그래픽 개체를 참조하세요.

예시

// The code fragment shows the usage of CFont::operator HFONT.

// Initialize a CFont object with the characteristics given
// in a LOGFONT structure.
LOGFONT lf;

// clear out structure
memset(&lf, 0, sizeof(LOGFONT));

// request a 12-pixel-height font
lf.lfHeight = 12;

// request a face name "Arial"
_tcsncpy_s(lf.lfFaceName, LF_FACESIZE, _T("Arial"), 7);

CFont font1;
font1.CreateFontIndirect(&lf); // create the font

// CFont::operator HFONT automatically converts font1 from
// CFont* to HFONT.
CFont *font2 = CFont::FromHandle(font1);

// Do something with the font just created...
CClientDC dc(this);
CFont *def_font = dc.SelectObject(font2);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);

// Done with the font. Delete the font object.
font1.DeleteObject();

참고 항목

MFC 샘플 HIERSVR
CGdiObject 클래스
계층 구조 차트