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

MFC-부채꼴 그리기

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



원을 그리는 것은 쉽지만 부채꼴을 그리기 위해서는 조금더 알아야 할것이 존재한다.

먼저 코드와 실행 화면을 보자.

//View::OnPaint
	CBrush NewBrush( RGB( 0, 192, 192 ) );
	CBrush* pOldBrush = dc.SelectObject( &NewBrush );

	// CRect를 사용해 특정 좌표를 기억한 이후
	CRect PieRect(20, 20, 140, 140);
	// Pie 함수를 사용해 부채꼴을 그린다.
	dc.Pie( PieRect,
		CPoint( PieRect.CenterPoint().x, PieRect.top ),
		CPoint(PieRect.right, PieRect.CenterPoint().y));

	PieRect = CRect( 150, 20, 270, 140 );

	// Pie 함수를 사용해 부채꼴을 그린다.
	dc.Pie( PieRect,
		CPoint( PieRect.right, PieRect.CenterPoint().y ),
		CPoint( PieRect.CenterPoint().x, PieRect.top ) );

	dc.SelectObject( pOldBrush );​



// 실행 화면



일단 다음 처럼 부채꼴을 띄울 수 있는데

사용해야 할 함수는 CDC에 존재하는 Pie 함수 이다.

Pie 함수는 시작점과, 끝점을 지정해 주면,
시작점을 기준으로 끝점까지 반시계 방향으로 그림을 그리게 된다.

//View::OnPaint
	dc.Pie( PieRect,
		CPoint( PieRect.CenterPoint().x, PieRect.top ),
		CPoint(PieRect.right, PieRect.CenterPoint().y));​


이 부분을 보면, 먼저 PieRect라는 CRect를 넘겨주면서,
2번째 인자로 부채꼴의 시작점, 3번째 인자로 부채꼴의 끝점을 보내준다.
즉 PieRect안에서 반시계 방향으로 시작부터 끝까지 그려준다고 볼 수 있다.
CRect 클래스 안에는 CenterPoint라는 함수가 존재 하는데,
예제에서는 x축이 20~140까지의 사각 영역중에 중간, 80이라는 위치가 나오게 될 것이다.
(y축도 마찬가지)
그런 식으로 부채꼴의 시작, 끝을 잡아 주고 있다.
마찬가지로, 2번째의 부채꼴 역시,

//View::OnPaint
	dc.Pie( PieRect,
		CPoint( PieRect.right, PieRect.CenterPoint().y ),
		CPoint( PieRect.CenterPoint().x, PieRect.top ) );​


PieRect를 안을 기준으로,
시작점, 끝점을 각각 잡아 주고 부채꼴의 도형을 그리고 있다.

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

MFC-비트맵 띄우기  (0) 2010.05.16
MFC-가상 버튼 만들기  (0) 2010.05.16
MFC-도형 그리기  (0) 2010.05.16
MFC-선 그리기  (0) 2010.05.16
MFC-GDI의 개념  (0) 2010.05.16