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

본문 바로가기
사이트 내 전체검색

MFC Tip

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

페이지 정보

profile_image
작성자 이즈
댓글 0건 조회 696회 작성일 06-12-27 00:12

본문

트루타입이나 GDI 출력 글꼴을 이용하면 회전한 텍스트의 출력이 가능하다고 하던데, 어떻게 하면 되는지요. 

 물론 가능합니다. 어떤 하드웨어 장치는 회전하는 래스터 글꼴을 지원하기도 합니다.
  하드웨어가 추가적인 문자 회전 기능을 지원하는지 확인하려면 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();

댓글목록

등록된 댓글이 없습니다.

Total 172건 7 페이지

검색

회원로그인

회원가입

사이트 정보

컴퓨터 정보,윈도우즈,리눅스,포토샵,3ds
맥스,프로그래밍 강좌팁

접속자집계

오늘
345
어제
558
최대
5,287
전체
630,450
Copyright © www.qdata.co.kr All rights reserved.