2012年11月27日 星期二

CGRect的運算

在使用CGRect時,我們有時需要瞭解Rect的狀態,或是由目前的Rect來計算出下一個Rect的大小位置等等,Apple提供了基本的運算API

 官方資料
https://developer.apple.com/library/mac/#documentation/graphicsimaging/reference/CGGeometry/Reference/reference.html


1、创建一个几何原始数值
       CGPoint  CGPointMakeCGPoint A,CGPoint B            
             返回一个指定坐标点  
        CGRect   CGRectMakeCGFloat x,CGFloat y,CGFloat width,CGFloat height
 根据指定的坐标和大小创建一个矩形
 CGSize   CGSizeMakeCGFloat width,CGFloat height
 根据指定长宽创建一个CGSize   
2、修改矩形
CGRectDivide
            CGRect  CGRectInsetCGRect rect,CGFloat dx,CGFloat dy
            返回一个比原矩形大或小的矩形,但是中心点是相同的
CGRect CGRectIntegralCGRect A
 将矩形A的值转变成整数,得到一个最小的矩形,
CGRect CGRectIntersection:CGRect A,CGRect B
     获取两个矩形相交处所的矩形,没有相交返回NULL,用CGRectIsNull来检测
CGRectOffset
CGRectStandardize
CGRectUnion
3、比较数值
bool  CGPointEqualToPointCGPoint A,CGPoint B     
     返回两个点是否相等
bool  CGSizeEqualToSizeCGSize A,CGSize B
 CGSizeAB是否相等
bool  CGRectEqualToRectCGRect A,CGRect B       
     矩形AB的位置大小是否相等
bool  CGRectIntersectsRectCGRect A,CGRect B
     矩形AB是否相交,可用来判断精灵是否离开了屏幕
4、检查
       bool  CGRectContainsPointCGRect A, CGPoint B      
            检测矩形A是否包含指定的点B
bool  CGRectContainsRectCGRect A,CGRect B  
     检测矩形A是否包含矩形B
5、获取最大值、中等职和最小值
        CGFloat   CGRectGetMinXCGRect A) 
获取矩形x坐标的最小值
 CGFloat   CGRectGetMinYCGRect A)
 获取矩形y坐标的最小值 
CGFloat   CGRectGetMidXCGRect A) 
 获取矩形x坐标的中间值 
CGFloat   CGRectGetMidYCGRect A) 
 获取矩形y坐标的中间值 
CGFloat   CGRectGetMaxXCGRect A) 
 获取矩形x坐标的最大值 
CGFloat   CGRectGetMaxYCGRect A)
 获取矩形y坐标的最大值  
6、获取高和宽
CGFloat  CGRectGetHeightCGRect A)               
       获取矩形A的高
CGFloat  CGRectGetWidthCGRect A)            
       获取矩形A的宽
7、检测矩形是否存在或是无穷大
bool  CGRectIsEmptyCGRect A)
      矩形A是否长和宽都是0,或者是个NULL
bool  CGRectIsNullCGRect A)
   矩形A是否为NULL
bool  CGRectIsInfiniteCGRect A)
             矩形A是否无穷大,没有边界
 

一個測試的範例

    CGRect rect1 = CGRectMake(0, 0, 1024,768);
   
    CGRect rect3 = CGRectMake(500, 500, 900,768);
   
    CGRect rect4 = CGRectIntersection(rect1, rect3);
   
    Image1= [[UIImageView alloc]initWithFrame:rect4];
   
    CGRect rect2 = CGRectInset(rect1, 200.0f, 50.0f);
    Image2= [[UIImageView alloc]initWithFrame:rect2];
   
    [Image1 setImage:[UIImage imageNamed:@"mount1.jpg"]];
    [Image2 setImage:[UIImage imageNamed:@"mount2.jpg"]];
   
    [self.view  addSubview:Image1];
    [self.view  addSubview:Image2];
   
    [self.view sendSubviewToBack:Image1];
    [self.view sendSubviewToBack:Image2];







沒有留言: