font
- 이클립스 폰트 변경하는 방법 2014.04.16
- 7장 GID 기본 2012.06.28
이클립스 폰트 변경하는 방법
2014. 4. 16. 16:14
7장 GID 기본
2012. 6. 28. 12:58
- GDI와 DC에 대해서
- GDI(Graphics Device Interface)는 윈도우 운영체제가 제공하는 그래픽 출력 서비스 구조(인터페이스)
- 개발자는 제조사별 VGA 사용법을 알 필요 없이 GDI만 알면 된다.
- DC(Device Context)는 GDI를 추상화한 객체
- 개발자는 DC를 이용해 각종 그래픽 정보를 모니터에 출력
- WM_PAINT 메시지와 DC
- WM_PAINT 메시지는 윈도우를 다시 그려야 할 때 발생
- WM_PAINT 메시지 핸들러 함수(OnPaint())에서 그림 출력 코드 수행
- CDC 클래스는 DC를 객체화한 클래스
- GetDC() <-> ReleaseDC()
- DC는 특정 윈도우와 연결 됨
- CDC 클래스
파생 클래스 의미
CClientDC
윈도우의 클라이언트 영역으로 한정되는 DC CWindowDC 윈도우의 모든 영역(비클라이언트 영역 포함)에 대한 DC. 이 DC를 이용하면 다른 윈도우에 대해서 그리기 가능.
CPaintDC CClientDC 클래스와 유사하지만, 내부적으로 BefinPaint()/EndPaint() 함수를 호출하여 WM_ERASEBKGND 메시지 발생.
CMetaFileDC WMF(Window Meta File)와 EMF(Enhanced Meta File) 파일에 대한 DC
- 펜(Pen)과 브러시(Brush)
- DC의 대표적인 속성인 펜과 브러시
- 펜과 브러시의 속성을 변경할 수 있다.
-> dc.SelectObject() - 펜
- CPen 클래스는 세 가지로 다중 정의가 되어 있다.
- PS_SOLID 등의 기본 펜 스타일 존재
- PS_ENDCAP_ROUND 등의 끝 부분 처리 스타일 존재
- 브러시
- HS_BDIAGONAL 등의 스타일 존재
- 비트맵 브러시, 패턴 브러시
- 각종 도형 그리기
- 각각의 선이 모여 하나의 도형을 이루도록 하려면 코드상으로 명시를 해주어야 도형으로 인식한다.
- PS_JOIN_XXX 펜 스타일, dc.BeginPath(), dc.EndPath(), dc.StrokeAndFillPath()
- 같은 원리로 CDC 클래스의 Polygon() 메서드를 사용해도 된다.
- dc.Rectangle(), dc.Ellipse(), dc.Pie(), dc.RoundRect()
- 글꼴(Font)과 문자열 다루기
- dc.TexOut()
- CFont 클래스는 글꼴을 객체화한 클래스
- CFont 클래스의 CreateFontIndirect() 메서드는 LOGFONT 구조체의 정보를 기반으로 CFont 클래스 객체를 생성
- LOGFONT 구조체의 멤버를 통해 글꼴의 크기, 장평, 기울기, 굵기, 이탤릭 등의 속성을 줄 수 있다.
- 탭을 반영하기 위한 dc.TabbedTextOut()
- 직접 버튼 컨트롤 구현하기
- dc.FillSolidRect(), ::GetSysColor(), dc.Draw3dRect(), DrawText()