이클립스 폰트(Verdana) 바꾸기

  1. GDI와 DC에 대해서
    1. GDI(Graphics Device Interface)는 윈도우 운영체제가 제공하는 그래픽 출력 서비스 구조(인터페이스)
    2. 개발자는 제조사별 VGA 사용법을 알 필요 없이 GDI만 알면 된다.
    3. DC(Device Context)는 GDI를 추상화한 객체
    4. 개발자는 DC를 이용해 각종 그래픽 정보를 모니터에 출력
  2. WM_PAINT 메시지와 DC
    1. WM_PAINT 메시지는 윈도우를 다시 그려야 할 때 발생
    2. WM_PAINT 메시지 핸들러 함수(OnPaint())에서 그림 출력 코드 수행
    3. CDC 클래스는 DC를 객체화한 클래스
    4. GetDC() <-> ReleaseDC()
    5. DC는 특정 윈도우와 연결 됨
    6. CDC 클래스
       파생 클래스

      의미 

       CClientDC

       윈도우의 클라이언트 영역으로 한정되는 DC
       CWindowDC

       윈도우의 모든 영역(비클라이언트 영역 포함)에 대한 DC. 이 DC를 이용하면 다른 윈도우에 대해서 그리기 가능.

       CPaintDC

       CClientDC 클래스와 유사하지만, 내부적으로 BefinPaint()/EndPaint() 함수를 호출하여 WM_ERASEBKGND 메시지 발생.

       CMetaFileDC

       WMF(Window Meta File)와 EMF(Enhanced Meta File) 파일에 대한 DC

  3. 펜(Pen)과 브러시(Brush)
    1. DC의 대표적인 속성인 펜과 브러시
    2. 펜과 브러시의 속성을 변경할 수 있다.
      -> dc.SelectObject()
      1. CPen  클래스는 세 가지로 다중 정의가 되어 있다.
      2. PS_SOLID 등의 기본 펜 스타일 존재
      3. PS_ENDCAP_ROUND 등의 끝 부분 처리 스타일 존재
    3. 브러시
      1. HS_BDIAGONAL 등의 스타일 존재
      2. 비트맵 브러시, 패턴 브러시
    4. 각종 도형 그리기
      1. 각각의 선이 모여 하나의 도형을 이루도록 하려면 코드상으로 명시를 해주어야 도형으로 인식한다.
      2. PS_JOIN_XXX 펜 스타일, dc.BeginPath(), dc.EndPath(), dc.StrokeAndFillPath()
      3. 같은 원리로 CDC 클래스의 Polygon() 메서드를 사용해도 된다.
      4. dc.Rectangle(), dc.Ellipse(), dc.Pie(), dc.RoundRect()
    5. 글꼴(Font)과 문자열 다루기
      1. dc.TexOut()
      2. CFont 클래스는 글꼴을 객체화한 클래스
      3. CFont 클래스의 CreateFontIndirect() 메서드는 LOGFONT 구조체의 정보를 기반으로 CFont 클래스 객체를 생성
      4. LOGFONT 구조체의 멤버를 통해 글꼴의 크기, 장평, 기울기, 굵기, 이탤릭 등의 속성을 줄 수 있다.
      5. 탭을 반영하기 위한 dc.TabbedTextOut()
    6. 직접 버튼 컨트롤 구현하기
      1. dc.FillSolidRect(), ::GetSysColor(), dc.Draw3dRect(), DrawText()

    + Recent posts