0

代码示例

- (void)drawRect:(CGRect)rect {  
    [super drawRect:rect];

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSaveGState(context);
    CGContextTranslateCTM(context, 0, self.frame.size.height);
    CGContextScaleCTM(context, 1.0, -1.0);

    CGContextDrawImage(context, CGRectMake(0.0, 0.0, self.frame.size.width, self.frame.size.height), [UIImage imageNamed:@"sample.png"].CGImage);

    CGContextRestoreGState(context);    
}

=================

我想将图像中的某个矩形复制到上下文中,因此不会绘制整个图像,而只是图像的一部分。有人对此有解决方案吗?我在谷歌和文档上都找不到任何东西。

我知道有其他选择,例如: 1. 创建一个带有剪辑的 UIView,然后将 UIImageView 放置在其中。2. 在 UIScrollView 内创建 UIImageView 并使用内容偏移。

但是我觉得这些很烂...

4

3 回答 3

7

CGImageCreateWithImageInRect 应该可以正常工作。我就是这样做的。这是一个例子:

CGImageRef ref = CGImageCreateWithImageInRect(some_UIImage.CGImage, CGRectMake(x, y, height, width));
UIImage *img = [UIImage imageWithCGImage:ref];

这个例子从另一个UIImage的一个实例UIImage的CGImage属性中获取一个CGImageRef,然后对其进行裁剪,并使用UIImage的imageWithCGImage构造方法将其转回一个UIImage。祝你好运!

詹姆士

于 2010-04-19T23:55:00.097 回答
1

你可以试试 CGImageCreateWithImageInRect

于 2010-04-19T20:58:07.107 回答
1

这确实有效:

UIGraphicsBeginImageContext(rect.size);
CGContextRef currentContext = UIGraphicsGetCurrentContext();

CGRect clippedRect = CGRectMake(0, 0, rect.size.width, rect.size.height);
CGContextClipToRect( currentContext, clippedRect);

CGRect drawRect = CGRectMake(rect.origin.x * -1,
                             rect.origin.y * -1,
                             imageToCrop.size.width,
                             imageToCrop.size.height);

CGContextDrawImage(currentContext, drawRect, imageToCrop.CGImage);

UIImage *cropped = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();
于 2010-04-19T21:09:31.167 回答