从UIGraphicsImageContext

时间:2015-08-05 23:47:40

标签: ios objective-c crop cgcontextref downsize

我的CGPath形状像箭头,我正在我当前视图的CGContext中绘制。我想生成箭头的微缩版本(缩略图),将其作为Image添加到显示所有选定箭头的UITableView

我正在成功缩小整个上下文的图片,使箭头小于应有的值。理想情况下,我想将完整上下文的图像裁剪为箭头的边界。但是,我还没有成功。任何线索?谢谢你的帮助!

以下是包含箭头的完整视图和我正在生成的缩略图的另一张图片。 enter image description here enter image description here

理想情况下,上面的缩略图会被裁剪为仅包含箭头 - 而不是完整的上下文。

我使用的代码是以下代码:

- (UIImage*) imageForObject:(id<GraphicalObject>) object 
                     inRect:(CGRect)rect {

    UIImage *image = [UIImage new];
    CGRect objectBounds = [object objectBounds];
    UIGraphicsBeginImageContext(self.view.frame.size);//objectBounds.size);
    CGContextRef context =UIGraphicsGetCurrentContext();
    [object drawInContext:context];
    //doesn't work 
    CGContextClipToRect(context, objectBounds);

    image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return image;
}

1 个答案:

答案 0 :(得分:0)

名为CGRect的{​​{1}}有两个组成部分:objectBoundsorigin。为了将对象正确地绘制为缩略图,代码需要缩放图像(以获得正确的大小)并翻译图像(将原点移动到size)。所以代码看起来像这样

{0,0}