이전 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 |