블로그 이미지
하루, 글. 그림. 영상매체. 표현을 도와주는 기기들. 도전 중. 동화다아아
    동화다아아

    카테고리

    분류 전체보기 (176)
    잡담 (1)
    IT 기기-리뷰&뉴스 (7)
    리뷰 - 도서 (1)
    리뷰 - 영상 (0)
    리뷰 - 그림/음악 (1)
    내장형 하드웨어 (163)
    Total
    Today
    Yesterday

    - 폰트도 펜이나 브러시와 마찬가지로 GDI 오브젝트이다.
    - 문자열을 원하는 폰트로 출력하고자 한다면 먼저 폰트 오브젝트를 만들어 DC로 전송해야 한다.

    → 폰트를 만들기 위해서는 CreateFont 함수를 사용하며 이 함수가 리턴하는 핸들을 HFONT형의 변수에 대입한다.

    HFONT CreateFont(int nHeight, int nWidth, int nEscapement, int nOrientation, int fnWeight, DWORD fdwltalic, DWORD fdwUnderline, DWORD fdwStrikeOut, DWORD fdwCharSet, DWORD fdwOutoutPrecision, DWORD fdwClipPrecision, DWORD fdwQuality, DWORD fdwPitchAndFamily, LPCTSTR lpszFace);

    → 인수가 14개나 되며 이것은 그만큼 글꼴이 복잡한 모양을 가질 수 있다는 것이다.
    → 이 중 문자의 크기를 지정하는 nHeight 와 글꼴 모양을 지정하는 lpszFace 정도가 자주 변경되어 사용된다.

    → 예제 

    LRESULT OnPaint(HWND hWnd, WPARAM wParam, LPARAM lParam)
    {
     HDC hdc;
     PAINTSTRUCT ps;
     HFONT hFont, OldFont;
     TCHAR *str = TEXT("폰트 Test 1234");
     
     hdc = BeginPaint(hWnd, &ps);
     hFont = CreateFont(50, 0, 0, 0, 0, 0, 0, 0, HANGEUL_CHARSET, 0, 0, 0, VARIABLE_PITCH|FF_ROMAN, TEXT("궁서"));
     OldFont = (HFONT)SelectObject(hdc, hFont);
     TextOut(hdc, 100, 100, str, lstrlen(str));
     SelectObject(hdc, OldFont);
     DeleteObject(hFont);
     EndPaint(hWnd, &ps);
     
     return 0; 
    }

    → 궁서체의 50픽셀 높이를 가지는 폰트 오브젝트를 만든 후 이 폰트를 DC에 선택하고 문자열을 출력하였다.


    - 텍스트의 색상
    → 이전에 살펴본 문자열 정렬 상태를 지정하는 SetTextAlign 함수 외에 다음 세 함수에 대해 알아본다.

    COLORREF SetTextColor(HDC hdc, COLORREF crColor);
    COLORREF SetBkColor(HDC hdc, COLORREF crColor);
    int SetBkMode(HDC hdc, int iBkMode);

    → SetTextColor는 Text의 Color를 Set하는 함수이며 SetBkColor는 글자 뒤쪽의 배경 색상을 지정하는 함수이다.
    → 두 함수 다 COLORREF형의 인수를 취하므로 RGB 매크로 함수를 사용하여 원하는 색상을 설정한다.
    → 두 함수의 반대 함수는 GetTextColor, GetBkColor이며 이 함수들은 현재 설정된 문자색과 배경색을 조사한다.
    → SetBkMode 함수는 배경색상을 사용할 방법을 설정한다.
    → OPAQUE와 TRANSPARENT 두가지 옵션 중 한가지를 설정할 수 있으며 디폴트는 OPAQUE이다.

    OPAQUE : 불투명한 배경을 사용한다. 그래서 배경 색상에 의해 뒷쪽의 그림이 지워진다. 이모드가 디폴트이다.
    TRANSPARENT : 투명한 배경색상을 사용한다. 그래서 문자를 출력한 후에도 배경이 바뀌지 않는다. 즉, 문자 획 사이의 여백에 있는 원래 배경이 지워지지 않는다.
    → 바둑판 모양의 사각형을 그려 배경을 만든 후 노란색 배경에 빨간색 글자를, 모드를 바꾸어 가며 출력해 보았다.


    → 불투명한 배경 모드를 사용한 경우는 배경의 바둑판 모양이 지워지지만 투명한 배경 모드를 사용하면 글자 사이사이로 바둑판 모양이 그대로 남아 있는다. 비트맵이나 그림 위에 문자열을 출력한다면 투명 모드를 사용해야 할 것이다.

    '내장형 하드웨어 > WINAPI' 카테고리의 다른 글

    WINAPI - 체크 박스  (0) 2011.09.20
    WINAPI - 컨트롤(버튼)  (0) 2011.09.19
    WINAPI - 비트맵 출력, 메모리 DC  (0) 2011.09.15
    WINAPI - RopMode2 실습  (0) 2011.09.09
    WINAPI - 그리기 모드  (0) 2011.09.09
    Posted by 동화다아아
    , |

    최근에 달린 댓글

    최근에 받은 트랙백

    글 보관함