C & C++/MFC Media

쓸만한 Rect 관련 API 함수

izen8 2011. 3. 27. 16:10

쓸만한 Rect 관련 API 함수

RECT 구조체를 교집합, 이동, 증가하기 등을 처리할 경우 직접 코드를 작성하여도 좋지만, 이미 제공되는 함수도 쓸만한 것들이 많이 있습니다.
BOOL UnionRect(
LPRECT lprcDst, // destination rectangle
CONST RECT *lprcSrc1, // first rectangle
CONST RECT *lprcSrc2 // second rectangle );

두개의 사각형으로 하나의 사각형으로 합한다.
면적이 0이면 FALSE 아니면 TRUE 를 리턴한다.
BOOL InflateRect(
LPRECT lprc, // rectangle
int dx, // amount to adjust width
int dy // amount to adjust height );

dx 만큼 좌측은 빼주고 우측을 더해주어 전체 가로면적을 Width + dx*2 만큼 증가하고
dy 만큼 위쪽은 빼주고 아래쪽을 더해주어 전체 세로면적을 Height + dy*2 만큼 증가한다.
 성공시 TRUE, 실패시 FALSE 을 리턴한다.


BOOL IntersectRect(
LPRECT lprcDst, // intersection buffer
CONST RECT *lprcSrc1, // first rectangle
CONST RECT *lprcSrc2 // second rectangle );

두개의 사각형의 교집합을 구한다.
교집합이 없다면 FALSE 을 있다면 TRUE 을 리턴한다.
BOOL OffsetRect(
LPRECT lprc, // rectangle
int dx, // horizontal offset
int dy // vertical offset );

사각형을 dx, dy 만큼 이동시킨다.
성공시 TRUE, 실패시 FALSE 을 리턴한다.
CRect 에도 비슷한 함수들이 존재합니다.
    CRect rc1( 10, 10, 100, 100 );
    CRect rc2( 20, 20, 200, 200 );
    CRect rc3;
    rc3.UnionRect( rc1, rc2 );
    ASSERT( rc3 == CRect( 10, 10, 200, 200 ) );

http://winapi.co.kr/win32lec/win32lec.htm