Please Enable JavaScript!
Gon[ Enable JavaScript ]

반응형

MFC 에서 도형, 이미지등의 그림을 그릴 때 원하는 영역에만 표시하고자 할 때

 

개발환경 : window 7 32bit, Visual Studio 2010

 

Static 컨트롤에 도형을 그려넣고 클릭후 마우스를 이동시켰을 때

컨트롤 영역을 벗어나도 DC 는 도형을 그리게 된다.

아래 그림과 같이 원을 그린후 마우스로 이동시켰다. 박스를

벗어나도 그려지는 것을 볼수 있다.

 

이미지가 있는 static 박스내에서만 그리고 싶을 때 어떻게 해야할까?

CDC SelectClipRgn 함수를 사용하면 된다.

파라미터로 CRgn 의 객체 포인트를 요구하게 되는데

표시하고자 하는 영역의 값이 들어있다.

 

CRgn static 에서 얻는 CRect 값을 가지고 CRgn::CreateRectRgnIndirect

함수를 사용해서 생성하면 된다. 그리고 마지막에 pDC->SelectClipRgn(NULL)

로 영역을 꼭 해제해준다

CRect rt;
CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_VIEW);
CDC* pDC = pStatic->GetDC();
pStatic->GetClientRect(&rt);

CRgn rgn;
rgn.CreateRectRgnIndirect(&rt);
pDC->SelectClipRgn(&rgn);

// 원을 그린다
pDC->Ellipse(&m_cCurrentRt);

pDC->SelectClipRgn(NULL); // 영역 설정 해제 

 

그럼 위의 소스를 적용했을 때 어떻게 나타나는지

아래의 그림을 보자. 원했던 static 영역에서만 녹색

원형 라인이 나타나는 것을 볼수 있다.

반응형
Posted by 녹두장군1
,