1 / 20

Windows Programming 제대로 배우기

Windows Programming 제대로 배우기. Chapter 6. GDI Objects. 학습 목표. 목표 화면에 이동하는 오브젝트 구현 학습 단계 DC(Device Context) 와 GDI Object GDI Objects and Selecting 화면에 이동하는 오브젝트 구현 방법. DC(Device Context) 와 GDI Object. DC 란 무엇인가 ? 지금까지 모든 출력문들은 모두 hdc 가 사용됨 TextOut(hdc, 0, 0, temp, strlen(temp));

dash
Download Presentation

Windows Programming 제대로 배우기

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Windows Programming제대로 배우기 Chapter 6. GDI Objects

  2. 학습 목표 목표 화면에 이동하는 오브젝트 구현 학습 단계 • DC(Device Context)와 GDI Object • GDI Objects and Selecting • 화면에 이동하는 오브젝트 구현 방법

  3. DC(Device Context)와 GDI Object • DC란 무엇인가? • 지금까지 모든 출력문들은 모두 hdc가 사용됨 • TextOut(hdc, 0, 0, temp, strlen(temp)); • LineTo(hdc, 120, 20); • Rectangle(hdc, 0, 0, 100, 100); • 왜 DC라는 핸들을 사용할까?

  4. hWnd hdc • 윈도우는 View를 형성하는 하나의 Frame(틀)일뿐이며, DC가 직접적(논리적)인 출력대상임 • DC에는 현재의 DC에 설정된 Pen의 정보(펜스타일, 굵기, 색상)나, Brush의 정보, Font 정보 및 해상도에 관한 정보 지님

  5. hWnd hdc • 윈도우는 하나의 Frame이며, DC는 간단히 그 뒤에 그려지는 도화지 • GDI Object란 그림을 그리는 데 필요한 각 도구 (펜, 브러쉬, 폰트, 비트맵) 등을 의미 • 논리적으로 DC는 윈도우 내에 존재하며, 윈도우는 기본적으로 하나의 DC를 갖고 있음 • 모든 직접적인 출력문에는 DC가 요구됨

  6. GDI Objects and Selecting • GDI(Graphic Device Interface) Object란 • 그림을 그리는 데 필요한 도구 • (예) 펜, 브러쉬 • 사용개념 • 원하는 색을 선택한다 • 그림을 그린다 • 원래있던 색으로 다시 원위치 시킨다 • RGB의 조합으로 색상만듬

  7. 색을 선택하는 과정 • 색펜을 만든다 • 그 색을 선택한다 • 그림을 그린다 • 원래있던 펜으로 원위치 시킨다 • 사용했던 펜을 버린다 • 함수 이용하는 과정 • CreatePen으로 펜을 만든다 • 새로 만든 펜을 SelectObject한다 • 출력한다 • 원래의 펜으로 다시 SelectObject한다 • DeleteObject로 새로 만들었던 펜을 삭제한다

  8. 실제 함수 코딩 • hPen = CreatePen(PS_SOLID, 1, RGB(0,255,0)); • hOldPen = (HPEN) SelectObject(hdc, hPen); • Rectangle(hdc, m_Rect.left, m_Rect.top, m_Rect.right, m_Rect.bottom); • SelectObject(hdc, hOldPen); • DeleteObject(hPen);

  9. CreatePen함수의 ProtoType HPEN CreatePen( Int fnPenStyle, Int nWidth, COLORREF crColor ); PenStyle의 종류 • PS_SOLID • PS_DASH • PS_DOT • PS_DASHDOT

  10. hOldPen = (HPEN) SelectObject(hdc, hPen); • 이전에 설정되어 있던 Object를 반환하여 주므로, 이를 받아놓아 나중에 원위치시키는 데 사용 • 정확한 Type으로 반환받기 위해 Type-Casting한다

  11. 브러쉬는 스타일을 속성으로 지정하는대신 여러 가지 함수 제공 • CreateSolidBrush • CreateHatchBrush • CreatePatternBrush

  12. 예제분석-MoveRect-with Color • Timer를 이용하여 사각형을 윈도우 내부에서 좌우로 왔다갔다하는 프로그램작성 • 움직이는 사각형은 윈도우의 좌,우에 부딪히면 방향을 반대로 바꾼다

  13. Toggle

  14. 시스템에서 바탕화면으로 지정한 색

  15. 예제분석-MoveRect-with Color Func

  16. Overload

  17. 신호등을 시물레이트하는 프로그램예제분석-Traffic Signal • - 신호등을 빨간색, 녹색, 노란색 등이 • 순차적으로 켜지게 됨 • 맨 위의 빨간색을 위한 Rect를 적당히 • 설정 후 OffsetRect로 나머지 Rect를 • 잡아줌 • Rect가 모두 3개가 필요하먀, Color는 • 배경색 3개, 전경색 3개 각각 필요 • - Lamp가 켜지는 순서는 1-3-2의 순임

  18. Lamp의 3개의 영역 배경색 전경색

  19. // 윈도우 전체 영역 얻어옴 : r R // r을 전체 –10 Pixel만큼 안쪽으로 줄임 // r의 bottom을 1/3로 줄임 이 Rect r를 계속 아래로 Offset시키면서 각 배열에 넣어줌 0,1,2 라운드 토글

More Related