Iphone CGImageCreateWithImageInRect导致失真

Iphone CGImageCreateWithImageInRect导致失真,iphone,cgimage,Iphone,Cgimage,我用CGImageCreateWithImageInRect做了一个放大效果,它工作得很好,除非我靠近视图的边缘。在这种情况下,剪裁会导致图像失真。现在,我抓取一个72x72的视图块,对其应用一个圆形遮罩,然后绘制遮罩图像,并在顶部绘制一个圆圈 当复制的块接近视图的边缘时,由于剪切,它会小于72x72,然后当它在放大镜中绘制时,它会被拉伸 例如,当接触点靠近左边缘时,我想创建一个图像,其中左半部用纯色填充,右半部包含被放大的部分视图。然后将遮罩应用于该图像,并在顶部添加覆盖 这就是我现在正在做的

我用CGImageCreateWithImageInRect做了一个放大效果,它工作得很好,除非我靠近视图的边缘。在这种情况下,剪裁会导致图像失真。现在,我抓取一个72x72的视图块,对其应用一个圆形遮罩,然后绘制遮罩图像,并在顶部绘制一个圆圈

当复制的块接近视图的边缘时,由于剪切,它会小于72x72,然后当它在放大镜中绘制时,它会被拉伸

例如,当接触点靠近左边缘时,我想创建一个图像,其中左半部用纯色填充,右半部包含被放大的部分视图。然后将遮罩应用于该图像,并在顶部添加覆盖

这就是我现在正在做的。imageRef是被放大的图像,mask是一个圆形mask,overlay是一个圆形,用于标记放大区域的边缘

CGImageRef subImage = CGImageCreateWithImageInRect(imageRef, CGRectMake(touchPoint.x - 36, touchPoint.y - 36, 72, 72));
CGImageRef xMaskedImage = CGImageCreateWithMask(subImage, mask);

CGContextRef context = UIGraphicsGetCurrentContext();
CGAffineTransform xform = CGAffineTransformMake(1.0, 0.0, 0.0, -1.0, 0.0, 0.0);
CGContextConcatCTM(context, xform);

CGRect area = CGRectMake(touchPoint.x - 84, -touchPoint.y, 170, 170);
CGRect area2 = CGRectMake(touchPoint.x - 80, -touchPoint.y + 4, 160, 160);
CGContextDrawImage(context, area2, xMaskedImage);
CGContextDrawImage(context, area, overlay);

我通过使用CGBitmapContextCreate()创建位图上下文来解决这个问题。然后,我将捕获的区域绘制到该上下文的一个较小区域中,并使用CGBitmapContextCreateImage()从中创建了一个图像。这是拼图中缺失的部分。

我也面临着同样的问题,你能详细解释一下吗。