在先前文章已經介紹過部份的 CoreGraphic 功能,像是改變色調、為 2D 影像添加材質與紋理和遮色片的應用等,這裡將示範另一個很常用的橡皮擦功能,雖然說橡皮擦效果也可以使用遮色片等技巧來實現,但是在處理局部區域的影像時,會比遮色片來的方便許多,其程式碼如下。
UIImage *macImage = [UIImage imageNamed:@"mac.png"]; UIGraphicsBeginImageContext(macImage.size);
//設定參考範圍
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextScaleCTM(context, 1, -1);
CGRect region = CGRectMake(0, 0, macImage.size.width, macImage.size.height);
CGContextTranslateCTM(context, 0, -region.size.height);
CGContextDrawImage(context, region, macImage.CGImage);
CGRect eraserRect;
for (int y=5; y<=10; y++) {
eraserRect = CGRectMake(0, y*15, macImage.size.width, 5);
//實做像皮擦功能
CGContextClearRect(context, eraserRect);
}
//將影像指定給imageView
imageView_1.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
上述程式碼擦除影像的位置是由 For 迴圈的迭代參數來決定,由於並未從新定義此影像 Context 的座標,因此擦除的方向是由下而上且由左至右來進行。
沒有留言:
張貼留言