2012-12-13 3 views
0

안녕하세요 저는 DirectX의 게임을 curently 작업하고 있으며 글꼴을 크레이트 처리하고 해당 글꼴로 텍스트를 그리는 방법을 알고 있습니다. 이것이 내가하는 방법입니다.DirectX에서 사용할 수 있도록 사용자 정의 글꼴을로드하는 방법은 무엇입니까?

여기에서 내 글꼴을 만듭니다.

D3DXCreateFont(D3DDevice, // The device 
       20,      // Font size 
       0,       // Default width 
       FW_NORMAL,     // Font weight 
       1,       // MipMap 
       false,      // Italic 
       DEFAULT_CHARSET,   // Charset 
       OUT_DEFAULT_PRECIS,  // Output precision 
       DEFAULT_QUALITY,   // Quality 
       DT_LEFT | DT_TOP,   // Default pitch & family 
       "Arial",     // Font name 
       &ArialFont);    // Font object 

여기 내 글꼴을 표시 할 때의 내 RECT입니다.

RECT FontRect; 
FontRect.left   = 50;   // xPos 
FontRect.top   = 50;   // yPos 
FontRect.right   = 800;  // maxX Cutoff 
FontRect.bottom  = 600;  // maxY Cutoff 

여기 내 글꼴을 표시합니다.

ArialFont->DrawTextA(NULL,         // Sprite 
        "Test Text",       // Text 
        strlen("Test Text"),     // Text length 
        &FontRect,        // The font RECT 
        DT_LEFT | DT_TOP,      // Format 
        D3DXCOLOR_XRGB(255, 255, 255));  // Color 

하지만 그냥 해당 글꼴이 내 컴퓨터의 오른쪽에 설치해야한다는 것을 의미한다 이름을 작성해야하기 때문에 당신은 내가 내 글꼴을 만들 때 두 번째 마지막 매개 변수는 바로 글꼴 이름이라고 볼 수 있습니까? 이제 내 질문은 내가 어떻게 '사용자 지정 글꼴'을 가질 수 있도록이 프로그램을 실행할 때 파일에서 메모리로 또는 다른 글꼴로로드 할 수 있습니까?

답변

2

사용자 정의 글꼴 (예 : .ttf 파일)을 프로그램 시작시 임시로 설치할 수 있습니다. 따라서 WinApi-Method AddFontResourceEx() (msdn-doc)을 사용하여 시스템에 글꼴을로드 할 수 있습니다. FR_PRIVATE으로 플래그를 지정하면 해당 프로세스에서만 사용할 수 있으며 프로세스가 종료되면 자동으로 제거됩니다. RemoveFontResourceEx() (msdn-doc)을 사용하면 수동으로 제거 할 수 있습니다. DirectX에서 설치된 폰트의 사용법은 이름을 통해서만 가능합니다.

관련 문제