ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 글꼴과 문자열 출력
    MFC 2025. 4. 14. 20:29

    글꼴과 문자열 출력

    • 문자열은 그려지는 것으로 이해할 수 있음
    • MBCS와 Unicode 환경을 반드시 고려
    • 응용 프로그램 수준에서 글꼴을 일치시키려면 렌더링 전에 미리 전역 객체로 생성해두는 것이 바람직
    • 핵심 함수
      - TextOut()
      - TabbedTextOut()
      - DrawText() 

    	dc.SetBkMode(TRANSPARENT);
    	dc.SetBkColor(RGB(255, 0, 0));
    	dc.TextOut(50, 300, _T("Hello World"));

    SetBkColor는 텍스트의 배경색을 의미한다. 단, SetBkMode가 OPAQUE일때만 적용 가능하다.

    	CFont fnt;
    	LOGFONT lf = { 0 };
    	lf.lfHeight = 36;		// 글자 크기
    	wsprintf(lf.lfFaceName, TEXT("%s"), TEXT("Arial")); // 글꼴 이름
    	fnt.CreateFontIndirect(&lf);	// 글꼴 생성
        dc.SelectObject(&fnt);	// 글꼴 선택

    글꼴을 만드는 코드이다. lf를 0으로 초기화해놓고, 글자 크기를 설정한다.

    void CPenSampleView::OnPaint()
    {
    	CPaintDC dc(this); // device context for painting
    
    	//배경
    	CRect rect(50, 50, 250, 100);
    	dc.FillSolidRect(&rect, RGB(192, 192, 192)); // 배경색으로 채우기
    
    	CFont fnt;
    	LOGFONT lf = { 0 };
    	lf.lfHeight = 36;		// 글자 크기
    	wsprintf(lf.lfFaceName, TEXT("%s"), TEXT("Arial")); // 글꼴 이름
    	fnt.CreateFontIndirect(&lf);	// 글꼴 생성
    	CFont* pOldFont = dc.SelectObject(&fnt); // DC에 글꼴 선택
    
    	dc.SetTextColor(RGB(255, 0, 0)); // 글자 색상
    	dc.DrawText(TEXT("Hello, MFC!"), &rect,
    		DT_WORDBREAK); // 글자 출력
    	dc.SelectObject(pOldFont); // DC에 선택된 글꼴 복원
    
    }

    LOGFNOT 구조체를 사용해서 글꼴의 속성을 설정한다. 

    SetTextColor함수로 텍스트의 색상을 빨간색으로 설정할 수 있다.

    DrawText() 함수는 텍스트를 사각형 영역 (rect) 안에 그리는 함수이다.

    DT_WORDBREAK는 텍스트가 영역에 맞게 줄바꿈 되도록 설정한다.

     

    'MFC' 카테고리의 다른 글

    GDI - 고급  (0) 2025.04.16
    비트맵 리소스 다루기  (0) 2025.04.15
    렌더링 시점과 DC에 대한 이해 , RGB컬러  (0) 2025.04.14
    툴바와 상태바  (0) 2025.04.13
    팝업 메뉴  (0) 2025.04.09
Designed by Tistory.