CLOSE SEARCH
POSTS TAGGED WITH: Geometry

Geometry 객체

Geometry 객체는 Shape 객체와 달리 스스로를 렌더링 할 수 없으며 특정 도형 객체에 대한 기하 데이터만을 가지고 있다. 그렇기 때문에 Path.Data 속성이나 UIElement의 Clip 속성에 사용된다. 실버라이트에서 제공하는 Geometry 객체는 아래와 같다.

  • LineGeometry
  • RectangleGeometry
  • EllipseGeometry
  • PathGeomerty
– LineGeometry

Geometry 관련 구조체와 함수들

CGFloat

typedef float CGFloat; // 32-bit

typedef double CGFloat; // 64-bit

※ MAC OS X 10.6 이상에서 사용할 수 있다.



CGPoint

struct CGPoint {

CGFloat x;

CGFloat y;

};

typedef struct CGPoint CGPoint;


– CGPoint 구조체 생성

CGPoint CGPointMake (CGFloat x, CGFloat y);


– CGPoint 비교

bool CGPointEqualToPoint (CGPoint point1, CGPoint point2);



CGSize

struct CGSize {

CGFloat width;

CGFloat height;

};

typedef struct CGSize CGSize;


– CGSize 구조체 생성

CGSize CGSizeMake (CGFloat width, CGFloat height);


– CGSize 비교

bool CGSizeEqualToSize (CGSize size1, CGSize size2);



CGRect

struct CGRect {

CGPoint origin;

CGSize size;

};

typedef struct CGRect CGRect;


– CGRect 구조체 생성

CGRect CGRectMake (CGFloat x, CGFloat y, CGFloat width, CGFloat height);


– CGRect(rect)안에 CGPoint(point)가 포함되는지 판별

bool CGRectContainsPoint (CGRect rect, CGPoint point);


– CGRect(rect1)안에 CGRect(rect2)가 포함되는지 판별

bool CGRectContainsRect (CGRect rect1,CGRect rect2);


– CGRect 비교

bool CGRectEqualToRect (CGRect rect1, CGRect rect2);


– CGRect 크기 및 위치

CGFloat CGRectGetHeight (CGRect rect);

CGFloat CGRectGetWidth (CGRect rect);


CGFloat CGRectGetMinX (CGRect rect);

CGFloat CGRectGetMinY (CGRect rect);

CGFloat CGRectGetMidX (CGRect rect);

CGFloat CGRectGetMidY (CGRect rect);

CGFloat CGRectGetMaxX (CGRect rect);

CGFloat CGRectGetMaxY (CGRect rect);


– 두 CGRect의 교집합/합집합(두개를 모두 포함하는 최소 사각 영역) 리턴

CGRect CGRectIntersection (CGRect r1, CGRect r2);

CGRect CGRectUnion (CGRect r1,CGRect r2);


– 크기 변경후 새로운 CGRect 리턴 (dx, dy가 음수이면 확대, 양수이면 축소)

CGRect CGRectInset (CGRect rect, CGFloat dx, CGFloat dy);


– 두 CGRect가 교차하는지 판별

bool CGRectIntersectsRect (CGRect rect1,CGRect rect2);


– CGRect 구조체의 크기 판별

bool CGRectIsEmpty (CGRect rect);

bool CGRectIsInfinite (CGRect rect);

bool CGRectIsNull (CGRect rect);


– 위치이동

CGRect CGRectOffset (CGRect rect, CGFloat dx, CGFloat dy);



※ 문자열과 Geometry 구조체 상호변환


NSString * NSStringFromCGPoint (CGPoint point);

NSString * NSStringFromCGSize (CGSize size);

NSString * NSStringFromCGRect (CGRect rect);


CGPoint CGPointFromString (NSString *string);

CGSize CGSizeFromString (NSString *string);

CGRect CGRectFromString (NSString *string);


ex)

CGRect rect = CGRectMake(10, 10, 100, 100);

NSString *str = NSStringFromCGRect(rect);

/* str에는 {{10, 10}, {100, 100}} 와 같은 형식의 문자열이 저장됨 */

/* CGPoint와 CGSize의 경우 {10, 10} 와 같은 형식으로 문자열이 저장됨 */