Physical Address

304 North Cardinal St.
Dorchester Center, MA 02124

이탤릭체 텍스트를 출력하려면

이탤릭체 텍스트를 출력하려면

물론 가능합니다. 어떤 하드웨어 장치는 회전하는 래스터 글꼴을 지원하기도 합니다.

하드웨어가 추가적인 문자 회전 기능을 지원하는지 확인하려면 TEXTCAP 파라미터를 전달해

CDC::GetDeviceCaps를 호출하면 됩니다. 단, 트루타입이나 GDI 출력 글꼴을 사용중이라면

GetDeviceCaps를 호출할 필요가 없습니다.

LOGFONT 구조체의 ifEscapement 멤버로 텍스트의 기준선과 x축의 각을 결정할 수 있는데 이때

주의해야 할 점은 실제 숫자보다,정확히 10배를 크게 지정해야 한다는 것입니다. 가령 45도만큼 회전한

글꼴을 생성하려면 ifEscapement를 450으로 설정하면 됩니다.

그리고 모든 글꼴이 현재 좌표 체계를 기준으로 같은 방향으로 기울이려면 ifClipPrecision 멤버의

CLIP_LH_ANGLES 비트를 설정해야 합니다. 이렇게 하지 않으면 부분적으로 글꼴이 반대 방향으로

회전할 것입니다.

다음 코드는 15도로 기울어진 문자열을 출력하기 위해 14포인트의 Arial 글꼴을 사용한 예입니다.

void CSampleleView::OnDraw(CDC* pDC) {

// 창의 크기를 결정한다.

CRect rcClient;

GetClientRect(rcClient);

// 문자열을 생성한다.

CString str(_T(“마소가 14주년을 맞이 합니다!”));

//빨간색 텍스트를 출력한다.

pDC->SetBkMode(TRANSPARENT);

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

CFont font; //글꼴 객체

LONGFONT stFont; //글꼴 정의

//변경되지 않을 글꼴 속성을 설정한다.

memset(&stFont, 0, sizeof(LONFONT));

stFont.lfHeight=MulPiv(14, -pDC->GetDeviceCaps(LOGPIXELSY), 72);

stFont.lfWeight=FW_NORMAL;

stFont.lfClipPrecision=CLIP_LH_ANGLES;

strcpy(stFont.lfFaceName, “Arial”);

//15 회전한 텍스트를 출력한다.

for(int nAngle=0; nAngle<3600; nAngle +=150) {//새로운 각을 지정한다.stFont.lfEscapement=nAngle;//글꼴을 생성하고 장치 컨텍스트로 선택한다.font.CreatFontIndirect(&stFont);CFont* pOldFont=pDC->SelectObject(&font);

//텍스트를 출력한다.

pDC->SelectObject(pOldFont);

font.DeletObject();

Leave a Reply

Your email address will not be published. Required fields are marked *