본문 바로가기
프로그래밍/MFC

MFC-선 그리기

by 리뷰하는 (게임)프로그래머_리프TV 2010. 5. 16.



이전 GDI개념에 대해 설명할때 간단하게 선의 속성을 잡아 주는 것을 보았다.

이번엔 여러개의 선을 그리고, 그 선에 따른 스타일 값에 따른 변화를 살짝 살펴 보자.

WM_PAINT메시지를 추가 하고.

//View::OnPaint
	// 특정 스타일을 기억하게 하기 위한 변수
	LOGBRUSH lb;
	lb.lbStyle = BS_SOLID;
	lb.lbColor = RGB( 192, 192, 192 );

	// 여러개의 팬을 만든다.
	CPen arNewPen[3];
	// 팬을 사용 하였을 때, 이전 값을 저장하기 위해 CPen의 *변수 생성
	CPen* pOldPen = NULL;

	// 각각의 팬의 속성을 지정해 준다.
	arNewPen[0].CreatePen( PS_GEOMETRIC | PS_SOLID | PS_ENDCAP_ROUND, 20, &lb );
	arNewPen[1].CreatePen( PS_GEOMETRIC | PS_SOLID | PS_ENDCAP_SQUARE, 20, &lb );
	arNewPen[2].CreatePen( PS_GEOMETRIC | PS_SOLID | PS_ENDCAP_FLAT, 20, &lb );

	// 화면에 출력
	for( int i=0; i<3; ++i )
	{
		// 팬을 지정해 주면서 이전 값을 받아서
		pOldPen = dc.SelectObject( &arNewPen[i] );
		// 화면에 선을 그리고
		dc.MoveTo( 40, 40 * (i+1) );
		dc.LineTo( 240, 40 * (i+1) );

		// 다시 이전 값으로 dc를 복원
		dc.SelectObject( pOldPen );
		// 그 위에 기본 속성의 선을 하나 더 그린다.
		dc.MoveTo( 40, 40 * (i+1) );
		dc.LineTo( 240, 40 * (i+1) );

		// 선을 그린 후 그 선의 속성에 대해서 DeleteObject.
		arNewPen[i].DeleteObject();
	}​


소스 코드를 작성하고 실행하면,

다음과 같은 결과를 볼 수 있다.
//실행 화면


기존의 Pen 생성처럼 단순히
CPen Pen(____)가 아닌,
배열로 생성해서 생성자에 속성을 넣는것이 아닌.
CreatePen()을 사용한다는 것과,
공통적인 속성에 대해서 LOGBRUSH 를 사용해 그 값을 &로 넘겨 준다는것이 차이가 있을 뿐이다.

'프로그래밍 > MFC' 카테고리의 다른 글

MFC-부채꼴 그리기  (0) 2010.05.16
MFC-도형 그리기  (0) 2010.05.16
MFC-GDI의 개념  (0) 2010.05.16
MFC-마우스 입력( TRACKMOUSEEVENT )  (0) 2010.05.16
MFC-새로운 클래스 추가 하기  (0) 2010.05.16