1 / 16

GDI 의 개념

GDI 의 개념. Graphic Device Interface 윈도우가 하드웨어를 제어할 수 있도록 응용 프로그램에 제공하는 모든 기능 응용 프로그램과 디바이스 드라이버의 중간 역할 응용 프로그램에 대한 독립적인 그래픽 동작 수행. Device Context(DC) 의 개념. 일종의 핸들 애플리케이션과 출력 장치를 연결하는 역할 애플리케이션이 출력에 대한 허가를 얻고 , 또한 그려지는 영역을 결정하는 역활 GDI 에 의해 내부적으로 유지되는 데이터 구조 여러 가지 그래픽 속성에 대한 값을 가짐

Télécharger la présentation

GDI 의 개념

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. GDI의 개념 • Graphic Device Interface • 윈도우가 하드웨어를 제어할 수 있도록 응용 프로그램에 제공하는 모든 기능 • 응용 프로그램과 디바이스 드라이버의 중간 역할 • 응용 프로그램에 대한 독립적인 그래픽 동작 수행

  2. Device Context(DC)의 개념 • 일종의 핸들 • 애플리케이션과 출력 장치를 연결하는 역할 • 애플리케이션이 출력에 대한 허가를 얻고, 또한 그려지는 영역을 결정하는 역활 • GDI에 의해 내부적으로 유지되는 데이터 구조 • 여러 가지 그래픽 속성에 대한 값을 가짐 • Ex) 텍스트 속성/색상, 매핑 모드, 글꼴 • DC를 사용하는 이유 • 독립적인 하드웨어 출력을 할 수 있어 출력장치에 상관없이 동일한 방법으로 출력을 설정 • DC를 얻고 나면, 반드시 작업 완료시 해제

  3. DC를 얻는 방법 • OnDraw()함수, OnPaint()함수를 이용 • OnDraw() 함수의 인자 - CDC 오브젝트 Void CPractice4_1View:: OnDraw(CDC * pDC) { … } • OnPaint() 함수 내의 CPaintDC 오브젝트 Void CPractice4_1View::OnPaint() { CPaintDC dc(this) … } • 윈도우나 클라이언트 영역이 다시 그려져야 할 경우 수행 • DC의 해제는 MFC 내부 코드에 존재한다.

  4. DC를 얻는 방법 • GetDC() 함수의 이용 • 이 함수의 포인터 반환값을 받아서 사용 • ReleaseDC()함수를 호출하여 반드시 해제 • 사용 예 CDC *pDC = GetDC(); … ReleaseDC(pDC); • 이 방법으로 DC를 얻는 것은 일시적인 것으로 윈도우의 크기가 변하면 출력한 내용이 사라진다.

  5. DC를 얻는 방법 • CClientDC 클래스의 이용 • CDC 클래스의 파생 클래스 • Device Context의 생성/해제 자동적 수행 • 생성자 함수에서 GetDC()함수를 호출 • 소멸자 함수에서 ReleaseDC()함수를 호출 • 윈도우에 대한 핸들값이 필요 • 일시적으로 윈도우의 클라이언트 영역에서 그래픽 개체를 사용할 경우에 이용 • 사용 예 CClientDC dc(this) …

  6. DC를 얻는 방법 • CWindowDC를 이용 • 윈도우(프레임) 영역에 그래픽 요소를 출력하고자 할 때 사용한다. • GetWindowDC()함수를 이용하여 CWindowDC 클래스의 인스턴스를 포인터 형태로 넘겨 받아 이용 • 작업 수행 후, ReleaseDC()함수로 해제 • 사용 예 CWindowDC *pDC = GetWindowDC(); … ReleaseDC();

  7. GDI 객체 • GDI 기본 구성 요소 • 선과 곡선(Lines and Curves) • 직선, 사각형, 타원, 호, 베지어 곡선 • 채워진 영역(Filled Areas) • 브러시 개체를 이용 –색상, 패턴, 비트맵 이미지 • 비트맵(Bitmaps) • 디스플레이 장치의 픽셀과 일치하는 직사각형 배열 • 래스터 그래픽의 기본적인 도구 • 텍스트(Text)

  8. GDI 객체 • 화면에 그래픽 출력하기위한 요소

  9. GDI 객체 • 객체를 사용하는 방법 ① GDI 객체를 생성 • Create계열 함수 이용 ② 객체를 Device Context에 등록 • SelectObject()함수이용 • 기존 설정된 객체는 포인터로 저장 ③ Device Context를 사용하여 그래픽 출력 ④ 이전 객체로 환원 ⑤ 객체를 삭제 • DeleteObject()함수 이용

  10. GDI 객체 • 펜(Pen) • 선이나 영역의 경계선을 그릴 때 사용 • 선의 두께, 선이 색상, 선의 스타일 설정 • 펜의 사용하는 방법 ① CPen pen *oldpen pen.CreatePen(PS_SOLID, 1,RGB(0,0,0)); ② oldpen=pDC->SelectObject(&pen); ③ pDC->Ellipse(0,0,10,10); ④ pDC->SelectObject(oldpen); ⑤ pen.DeleteObject();

  11. GDI 객체 • CreatePen() 함수 • CreatePen() 함수는Pen을 생성하는 함수로 원형은 다음과 같다. BOOL CreatePen(int nPenStyle, int nWidth, COLORREF crColor); • nPenStyle : 펜의 스타일 • nWidth : 펜의 굵기 • crColor : 펜의 색상

  12. GDI 객체 • 펜의 스타일

  13. GDI 객체 • 브러시(Brush) • 영역의 내부를 채울 때 사용 • 채울 색, 패턴등이 사용 • 브러시 사용하는 방법 ① CBrush brush *oldbrush brush.CreateSolidBrush(RGB(0,0,0)); brush.CreateHatchBrush(HS_CROSS,RGB(0,0,0)); ② oldbrush=pDC->SelectObject(&brush); ③ pDC->Ellipse(0,0,10,10); ④ pDC->SelectObject(oldbrush); ⑤ brush.DeleteObject();

  14. GDI 객체 • CreateSolidBrush() 함수 • 단일 색으로 칠하는 브러시를 생성하는 함수 • CreateHatchBrush() 함수 • 일정한 패턴을 가진 해치 브러시를 생성하는 함수. • 해치 브러쉬의 스타일

  15. 그래픽 함수 • 선그리기 • MoveTo(int x, int y) 함수 • LineTo(int x, int y)함수 • 사각형 그리기 • Rectangle(int x1, int y1, int x2, int y2) • 원 그리기 • Ellipse(int x1, int y1, int x2, int y2) • 다각형 그리기 • Polyline(LPPOINT lpPoints, int nCount) • Polygon(LPPOINT lpPoints, int nCount) • 베지어 곡선 그리기 • PolyBezier(const POINT* lpPoints, int nCount)

  16. 실습문제 5-1 실행 화면 • 그래픽 객체를 이용한 그리기

More Related