반응형
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 영역에서만 녹색
원형 라인이 나타나는 것을 볼수 있다.
반응형
'기타 언어 > C# & MFC' 카테고리의 다른 글
Visual C# 다중 폼간 이벤트 전달하기 (0) | 2014.10.03 |
---|---|
Visual C# Form 에 WebBrowser 클래스 이용해 웹브라우저 만들기 (2부) (0) | 2014.09.25 |
Visual C# Form 에 WebBrowser 클래스 이용해 웹브라우저 만들기 (1부) (0) | 2014.09.25 |
개발도구인 C++ 빌더가 window 7 에서 실행되지 않을 때 (0) | 2013.05.23 |
MFC 에서 OpenCV 의 cvGetQuadrangleSubPix 를 이용한 이미지 회전 (3) | 2013.05.02 |
OpenCV 를 이용해 MFC 컨트롤(Static Control) 이미지 표현 하기 (0) | 2013.05.01 |
OpenCV 에서 IplImage 구조체 데이터 초기화 하기 (0) | 2013.04.29 |
Visual C++ 2010 fatal error LNK1123: failure during conversion to COFF 에러발생시 (8) | 2013.04.26 |