一個UIImage
對象提供了向當前上下文繪制自身的方法。我們現在已經知道如何獲取一個圖片類型的上下文并將它轉變成當前上下文。
平移操作:
下面的代碼展示了如何將UIImage繪制在當前的上下文中。
UIImage* mars = [UIImage imageNamed:@"Mars.png"];
CGSize sz = [mars size];
UIGraphicsBeginImageContextWithOptions(CGSizeMake(sz.width*2, sz.height), NO, 0);
[mars drawAtPoint:CGPointMake(0,0)];
[mars drawAtPoint:CGPointMake(sz.width,0)];
UIImage* im = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageView* iv = [[UIImageView alloc] initWithImage:im];
[self.window.rootViewController.view addSubview: iv];
iv.center = self.window.center;
圖1 UIImage平移處理
縮放操作:
下面代碼展示了如何對UIImage進行縮放操作:
UIImage* mars = [UIImage imageNamed:@"Mars.png"];
CGSize sz = [mars size];
UIGraphicsBeginImageContextWithOptions(CGSizeMake(sz.width*2, sz.height*2), NO, 0);
[mars drawInRect:CGRectMake(0,0,sz.width*2,sz.height*2)];
[mars drawInRect:CGRectMake(sz.width/2.0, sz.height/2.0, sz.width, sz.height) blendMode:kCGBlendModeMultiply alpha:1.0];
UIImage* im = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
圖2 UIImage縮放處理
裁剪操作:
UIImage沒有提供截取圖片指定區域的功能。但通過創建一個較小的圖形上下文并移動圖片到一個適當的圖形上下文坐標系內,指定區域內的圖片就會被獲取。下面代碼展示了如何獲取圖片的右半邊:
UIImage* mars = [UIImage imageNamed:@"Mars.png"];
CGSize sz = [mars size];
UIGraphicsBeginImageContextWithOptions(CGSizeMake(sz.width/2.0, sz.height), NO, 0);
[mars drawAtPoint:CGPointMake(-sz.width/2.0, 0)];
UIImage* im = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
以上的代碼首先創建一個一半圖片寬度的圖形上下文,然后將圖片左上角原點移動到與圖形上下文負X坐標對齊,從而讓圖片只有右半部分與圖形上下文相交。
圖3 UIImage裁剪原理
參考資料:
土夢博客