본문 바로가기
::public/윈도우즈 응용 프로그래밍

Direct2D - 텍스트

by 해맑은욱 2019. 9. 30.

DirectWrite 사용.

IDWriteTextLayout 인터페이스 제공.

 

*텍스트 그리기 함수들.

DrawText: 간단한 렌더링 방법 제공. IDWriteTextFormat 객체로 포매팅을 명시.

DrawTextLayout: 복잡한 레이아웃과 융통성을 제공. IDWriteTextFormat 객체로 포매팅을 명시.

DrawGlyphRun: 글리프(glyph) 레벨의 정교한 제어가 가능. 측정(measurement) 지원 함수들을 사용 제어값을 만듬.

 

*단순하게 텍스트 그리기.

// 초기화 설정.
// ID2D1Factorys는 D2D1CreateFactory 함수 호출 생성.
ID2D1Factory* pD2DFactory = NULL;
D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &pD2DFactory);
 
// IDWriteFactory는 DWriteCreateFactory 함수 호출 생성.
IDWriteFactory* pDWriteFactory = NULL;
DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, __uuidof(pDWriteFactory), reinterpret_cast<IUnknown**>(&pDWriteFactory));
 
// IDWriteTextFormat 객체 생성.
IDWriteTextFormat* pTextFormat = NULL;
pDWriteFactory->CreateTextFormat(
    L"Verdana",                  // 폰트 패밀리 이름의 문자열
    NULL,                        // 폰트 컬렉션 객체, NULL=시스템 폰트 컬렉션
    DWRITE_FONT_WEIGHT_NORMAL,   // 폰트 굵기. LIGHT, NORMAL, BOLD 등.
    DWRITE_FONT_STYLE_NORMAL,    // 폰트 스타일. NORMAL, OBLIQUE, ITALIC.
    DWRITE_FONT_STRETCH_NORMAL,  // 폰트 간격. CONDENSED, NORMAL, MEDIUM, EXTEXDED 등.
    50,                          // 폰트 크기.
    L"",                         // 로케일을 문자열로 명시.  영어-미국=L"en-us", 한국어-한국=L"ko-kr"
    &pTextFormat
);
 
// IDWriteTextFormat의 SetXxx 호출하여 포맷 속성 지정.
pTextFormat->SetTextAlignment(DWRITE_TEXT_ALIGNMENT_CENTER);            // 문단 센터 정렬
pTextFormat->SetParagraphAlignment(DWRITE_PARAGRAPH_ALIGNMENT_CENTER);  // 문장 내의 수직 정렬
 
// ID2D1RenderTarget의 DrawText 함수 호출.
D2D1_SIZE_F rSize = gp_render_target->GetSize();
gp_render_target->DrawText(
    L"Hello, World!",                               // WCHAR* 문자열
    13,                                             // 문자의 개수
    pTextFormat,                                    // IDWriteTextFormat 텍스트 포맷 
    D2D1::RectF(00, rSize.width, rSize.height),   // 그려질 영역의 크기와 위치.
    pTextBrush                                      // 붓(brush)
);
cs

 

 

 

'::public > 윈도우즈 응용 프로그래밍' 카테고리의 다른 글

Direct2D - 비트맵(Bitmap)  (0) 2019.09.27
Direct2D - 붓(Brush)  (0) 2019.09.27
Direct2D - 기하  (0) 2019.09.26
Direct2D - 변환  (0) 2019.09.26
Direct2D - 렌더타겟  (0) 2019.09.26