Presentation is loading. Please wait.

Presentation is loading. Please wait.

Computer Graphics 1 윈도우 프로그래밍 실습 II 김 창 헌김 창 헌.

Similar presentations


Presentation on theme: "Computer Graphics 1 윈도우 프로그래밍 실습 II 김 창 헌김 창 헌."— Presentation transcript:

1 Computer Graphics 1 윈도우 프로그래밍 실습 II 김 창 헌김 창 헌

2 Computer Graphics 2 Visual C++ 그래픽 프로그램  GDI( Graphic Device Interface ) 이용한 프로그램  GDI 란 ? 응용프로그램과 디바이스 드라이버의 중간 다리 역할을 하 는 것으로 응용 프로그램에 대한 장치 비 의존적인 그래픽 동작을 수 행한다.  디바이스 컨텍스트 (DC)  그래픽 객체들의 속성과 그래픽 모드를 정의하는 자료의 집합체로 출력 장치에 정보를 표시할 때 필요한 정보를 저장하는 구조체 윈도우프로그램예제

3 Computer Graphics 3 도형 그리기 프로그램  속성 시트에서 도형의 모양과 칼라를 선택하여 마우스 를 클릭한 지점에 도형을 그리는 프로그램.

4 Computer Graphics 4 도형 그리기 프로그램  AppWizard 를 사용하여 “draw” 프로젝트 파일을 생성하고 골격 코드를 작성한다. (SDI 모드 )

5 Computer Graphics 5 도형 그리기 프로그램  속성 페이지 다이얼로그박스  속성 페이지 다이얼로그 박스 를 생성한다.  Style 페이지 : IDD_STYLE  Color 페이지 : IDD_COLOR

6 Computer Graphics 6 도형 그리기 프로그램  각 페이지 다이얼로그 박스의 Dialog Properties 박스에서 다음 속성을 지정한다.

7 Computer Graphics 7 도형 그리기 프로그램  각 페이지의 첫번째 라디오 버튼 속성에서 Group 을 체 크한다.

8 Computer Graphics 8 도형 그리기 프로그램  속성 페이지의 다이얼로그 박스를 Cproperty Page 클래 스에서 상속받는 새로운 클래스를 생성한다. Style 속성페이지 : CStylePage Color 속성페이지 : CColorPage

9 Computer Graphics 9 도형 그리기 프로그램  속성 페이지의 컨트롤과 관련된 데이터 멤버를 등록한다.  Style page 의 라디오 버튼  control IDs: IDC_RECTANGLE  type : int  member variable :m_nShapeStyle  Color page 의 라디오 버튼  Control IDs : IDC_BLACK  Type : int  member variable : m_nColor

10 Computer Graphics 10 도형 그리기 프로그램  속성 시트의 클래스를 생성한다.  ClassWizard 를 실행하여 CPropertySheet 클래스에서 상속받 는 CModalSheet 클래스를 만든다.

11 Computer Graphics 11 도형 그리기 프로그램  CmodalSheet 클래스에 속 성 페이지 클래스 객체를 정의한다.  클래스 멤버를 정의할 때 헤더 파일에 바로 코 딩하지 말고 Class View 의 팝업 메뉴에서 “Add Member Variable” 메뉴 를 통해 등록하는 것이 좋음. #include “ColorPage.h”//Added by ClassView #include “StylePage.h” class CModalSheet : public CpropertySheet { public : CColorPage m_colorPage; CStylePage m_stylePage; };

12 Computer Graphics 12 도형 그리기 프로그램  생성자에서 속성 시트에 속성 페이 지를 추가한다. 추 가되는 순서가 속 성 시트에 나타나 는 순서이다. CModalSheet :: CModalSheet(LPCTSTR pszCaption,CWnd* pParentWnd,UNIT ISelectPage);CPropertySheet(pszCaption,pParentW nd,iSelectPage) { AddPage(&m_stylePage); AddPage(&m_colorPage); }

13 Computer Graphics 13 Class CDrawView : public Cview { protected: Crect m_rect; int m_nDrawStyle; int m_nDrawColor; } CDrawView:: CDrawView() { m_nDrawColor=0; m_nDrawStyle=0; } 도형 그리기 프로그램  뷰클래스에 도형, 칼라, 범위를 나타내는 멤버를 추가하 고 생성자에서 초기화 한다.

14 Computer Graphics 14 도형 그리기 프로그램  뷰 클래스에 왼쪽 마우스 버튼을 클릭한 메시지 WM_LBUTTONDOWN 를 처리하는 OnButtonDown 함수를 만든다.  마우스를 클릭한 지점에 현재 지정된 도형 객체에 선택한 색상으로 내부 를 채운 도형을 그린다.

15 Computer Graphics 15 선택된 도형을 선택된 색으로 그리기. Void CDrawView:: OnLButtonDown(UNIT nFlag,Cpoint point) { COLORREF color[4]={RGB(0,0,0),RGB(255,0,0),RGB(0,255,0 ),RGB(0,0,255)}; CClientDC dc(this); CBrush newBrush(color[m_nDrawColor]); CBrush* pOldBrush=dc.SelectObject(&newBrush) m_rect =Crect(point.x-50,point.y- 50,pint.x+50,point.y+50); switch(m_nDrawStyle) { case 0: //rectangle dc.Rectangle(m_rect); break; case 1: //round rectangle dc.RoundRectangle(m_rect,Cpoint(m_rect.Width()/ 8,m_rect.Heigh()/8); break; Case 2://ellipse dc.RoundRect(m_rect); break;} dc.SelectObject(pOldBrush); Cview:: OnButtonDown(nFlags,point); }

16 Computer Graphics 16 도형 그리기 프로그램  속성 시트를 호출할 메뉴를 만들어 뷰 클래스에 메뉴 항목에 대한 명령 핸들러를 설치하고 함수를 오버라이 드한다. void CDrawView:: OnModalSheet() { CModalSheet dlg(“ 내가 만든 속성 시트 ”); dlg.m_colorPage.m_nColor=m_nDrawColor; dlg.m_stylePage.m_nShapeStyle = m_nDrawStyle; if(dlg.DoModal() == IDOK) { m_nDrawColor = dlg.m_colorPage.m_nColor ; m_nDrawStyle = dlg.m_nShapeStyle; }

17 Computer Graphics 17 도형 그리기 프로그램  컴파일 하고 실행한다.

18 Computer Graphics 18 윈도우 프로그래밍 과제물  도형 모양과 칼라 선택하여 도형 그리기  마우스를 클릭한 곳에 지정된 모양과 색깔의 도형 그리기

19 Computer Graphics 19 과제물 요구사항  내용  제공하는 코드를 참조하여, 그려질 도형과 칼라를 추가  기본 요구사항  삼각형, 타원, 다각형, 부채꼴, etc.. 등의 도형을 추가할 수 있 어야 함  Black, Red, Green, Blue 이외의 색상을 지정할 수 있어야 함

20 Computer Graphics 20 과제물 추가 구현 사항  도형을 그룹화 해서 새로운 도형을 만듦  하트, 별, 꽃, 나비, 벌 등  수학 함수를 이용한 Field of “Flower”  마우스를 클릭한 지점에 다양한 모양의 꽃을 그려 줌  꽃잎의 표현은 수학 함수를 이용.  꽃밭은 여러 가지의 꽃이 존재하여야 함.

21 Computer Graphics 21 꽃잎 만드는 루틴  포트란 소스. PROGRAM SPAT CALL START(40,0) CALL SPIRO(12,7,5) STOP END SUBROUTINE SPIRO(A,B,D) INTEGER A,B,D,AMB PI=ACOS(-1,0) AMB=A-B THETA=0.0 THINC=PI*O.O2 N=B/ICF(A,B) NUM=N * 100 CALL MOVETO(FLOAT(AMB+D),0.0) DO 101 I=1,NUM THETA=THETA* THINC PHI=THETA*FLOAT(AMB)/FLOAT(B) X=FLOAT(AMB)*COS(THETA)+FLOAT(D)*COS(PHI) Y=FLOAT(AMB)*SIN(THETA)+FLOAT(D)*SIN(PHI) CALL LINETO(X,Y) END FUNCTION ICF(II,JJ) I=II J=JJ M=MOD(I,J) IF(M.NE. 0) THEN I=J J=M GOTO 99 ENDIF ICF=J RETURN END 왼쪽 코드 실행 결과

22 Computer Graphics 22 과제물 제출 및 평가 기준  제출물  실행파일, 보고서  자신이 구현한 부분의 소스 코드 포함, 문제 접근방법 및 알고 리즘 설명  평가기준  기본 요구사항의 구현  독창성  제출기한 준수


Download ppt "Computer Graphics 1 윈도우 프로그래밍 실습 II 김 창 헌김 창 헌."

Similar presentations


Ads by Google