c++

Visual Studio C++ MFC CRect 사용법

개발에대해 2025. 9. 18. 15:10
반응형

 

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 컨트롤이나 커스텀 그리기 작업을 효율적으로 처리할 수 있습니다.

반응형