iOS開發CoreGraphics核心圖形框架之四——變換函數

iOS開發CoreGraphics核心圖形框架之四——變換函數

1、引言

    在上一篇博客中,介紹了有關CGContext相關操做方法,其中能夠直接調用一些方法來進行所繪製圖形的平移,縮放,翻轉等變換。對於圖形了幾何變換,開發者也能夠採用另外一種方式實現,CoreGraphics框架中提供了CGAffineTransform結構體,這個結構體中定義了圖形變換的相關信息。框架

關於CGContext的相關內如博地址客以下:http://www.javashuo.com/article/p-mdgkzrqu-ec.html函數

2、使用CGAffineTransform相關函數進行繪製圖形的幾何變換

    CGAffineTransform中定義的方法即意義列舉以下:spa

//建立標準的變換矩陣
CGAffineTransform CGAffineTransformIdentity;
//手動建立變換矩陣
CGAffineTransform CGAffineTransformMake(CGFloat a, CGFloat b, CGFloat c, CGFloat d, CGFloat tx, CGFloat ty);
//建立平移變換
CGAffineTransform CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty);
//建立縮放變換
CGAffineTransform CGAffineTransformMakeScale(CGFloat sx, CGFloat sy);
//建立旋轉變換
CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle);
//判斷某個變化是不是來自標準矩陣的變換
bool CGAffineTransformIsIdentity(CGAffineTransform t);
//對某個變換矩陣進行平移變換
CGAffineTransform CGAffineTransformTranslate(CGAffineTransform t, CGFloat tx, CGFloat ty);
//對某個變換矩陣進行縮放變換
CGAffineTransform CGAffineTransformScale(CGAffineTransform t, CGFloat sx, CGFloat sy);
//對某個變換矩陣進行旋轉變換
CGAffineTransform CGAffineTransformRotate(CGAffineTransform t, CGFloat angle);
//對某個變換矩陣進行翻轉變換
CGAffineTransform CGAffineTransformInvert(CGAffineTransform t);
//對兩個變換矩陣進行計算
CGAffineTransform CGAffineTransformConcat(CGAffineTransform t1, CGAffineTransform t2);
//比較兩個變換矩陣是否相同
bool CGAffineTransformEqualToTransform(CGAffineTransform t1, CGAffineTransform t2);
//獲取應用變換後某點的座標
CGPoint CGPointApplyAffineTransform(CGPoint point, CGAffineTransform t);
//獲取應用變換後某個區域的尺寸
CGSize CGSizeApplyAffineTransform(CGSize size, CGAffineTransform t);
//獲取應用變換後某個區域的位置和尺寸
CGRect CGRectApplyAffineTransform(CGRect rect, CGAffineTransform t);

上述變換方法能夠直接做用於View,示例以下:.net

- (void)viewDidLoad {
    [super viewDidLoad];
    UIImageView * view = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 200, 200)];
    view.backgroundColor =[UIColor whiteColor];
    view.image = [UIImage imageNamed:@"image"];
    view.transform = CGAffineTransformRotate(CGAffineTransformIdentity, M_PI_4);
    [self.view addSubview:view];
}

專一技術,熱愛生活,交流技術,也作朋友。code

——琿少 QQ羣:203317592orm

相關文章
相關標籤/搜索