반응형
Visual Studio C++ MFC에서 CRect 사용법
MFC 프로그래밍에서 **사각형(Rectangle)** 영역을 다루어야 할 때 매우 유용한 클래스가 있습니다.
바로 CRect 클래스입니다.
CRect는 윈도우 좌표 기반의 사각형 정보를 관리하고, 다양한 편의 함수를 제공하여 GUI 프로그래밍을 쉽게 만들어줍니다.
CRect란?
CRect는 MFC에서 제공하는 사각형 클래스입니다.
네 개의 정수 좌표 left, top, right, bottom
으로 사각형을 정의하며,
크기 계산, 이동, 충돌 검사 등 다양한 기능을 제공합니다.
CRect 기본 선언
CRect rect(10, 20, 200, 150); // left, top, right, bottom
left
: 사각형 왼쪽 좌표top
: 사각형 위쪽 좌표right
: 사각형 오른쪽 좌표bottom
: 사각형 아래쪽 좌표
CRect 주요 함수
CRect는 사각형 연산에 편리한 멤버 함수를 제공합니다.
1. Width()와 Height()
int width = rect.Width(); // 190
int height = rect.Height(); // 130
사각형의 가로, 세로 크기를 쉽게 구할 수 있습니다.
2. MoveToXY()
// 사각형 위치 이동
rect.MoveToXY(50, 50); // left=50, top=50
사각형의 위치를 지정 좌표로 이동시킵니다.
3. OffsetRect()
// x=10, y=20 만큼 사각형 이동
rect.OffsetRect(10, 20);
4. InflateRect()와 DeflateRect()
// 사각형 크기 확장
rect.InflateRect(5, 5);
// 사각형 크기 축소
rect.DeflateRect(3, 3);
5. IntersectRect()와 UnionRect()
CRect rect1(10, 10, 100, 100);
CRect rect2(50, 50, 150, 150);
CRect rectIntersect;
// 두 사각형의 교차 영역 계산
rectIntersect.IntersectRect(&rect1, &rect2);
// 두 사각형 합집합 계산
CRect rectUnion;
rectUnion.UnionRect(&rect1, &rect2);
CRect 활용 예제
윈도우에서 사각형 영역을 그리고 충돌 검사를 하는 간단한 예제입니다.
void CMyView::OnDraw(CDC* pDC)
{
CRect rect1(50, 50, 200, 150);
CRect rect2(150, 100, 300, 250);
// 사각형 그리기
pDC->Rectangle(&rect1);
pDC->Rectangle(&rect2);
// 충돌 검사
CRect rectIntersect;
if(rectIntersect.IntersectRect(&rect1, &rect2))
{
pDC->FillSolidRect(&rectIntersect, RGB(255, 0, 0)); // 겹친 부분 빨간색 채움
}
}
정리
MFC의 CRect
클래스는 사각형 좌표 관리, 크기 계산, 이동, 충돌 검사 등 GUI 프로그래밍에서 매우 유용합니다.
Width(), Height(), MoveToXY(), OffsetRect(), InflateRect(), IntersectRect() 등의 함수를 적절히 활용하면 GUI 컨트롤이나 커스텀 그리기 작업을 효율적으로 처리할 수 있습니다.
반응형
'c++' 카테고리의 다른 글
[C++ STL 시리즈] 2편: list 사용법 (0) | 2025.09.19 |
---|---|
[C++ STL 시리즈] 1편: STL 개요 및 vector 사용법 (0) | 2025.09.19 |
Visual Studio C++ SendMessage 사용법 정리 (0) | 2025.09.18 |
Visual Studio C++ PostMessage 사용법 정리 (0) | 2025.09.18 |
Visual Studio C++에서 libcurl로 JSON 요청/응답 처리하기 (0) | 2025.09.18 |