Используйте некоторый код, подобный этому. originalImage
- изображение и p0
, p1
, p2
и p3
- CGPoint
s в качестве входных данных. clippedImage
является результирующее изображение:
// Create clipping path
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:p0];
[path addLineToPoint:p1];
[path addLineToPoint:p2];
[path addLineToPoint:p3];
[path closePath];
// Get boundary rectangle
CGRect rect = path.bounds;
// Create graphis context with translation and clipping
UIGraphicsBeginImageContextWithOptions(rect.size, NO, 1);
CGContextTranslateCTM(UIGraphicsGetCurrentContext(), -rect.origin.x, -rect.origin.y)
[path addClip];
// draw image
[originalImage drawAtPoint:CGPointZero];
// create resulting image
UIImage *clippedImage = UIGraphicsGetImageFromCurrentImageContext();
// clean up
UIGraphicsEndImageContext();
Я не проверял код. Таким образом, может быть, что перевод и обрезка не настроены в правильном порядке или используют неправильный знак.
[CGImageCreateWithImageInRect] (https://developer.apple.com/library//mac/documentation/GraphicsImaging/Reference/CGImage/index.html#//apple_ref/c/func/CGImageCreateWithImageInRect) является вашим другом. – Codo
Да, но у меня нет CGRect всего 4 CGPoints – Lothar
Сделайте четыре точки из прямоугольника или непрямоугольной формы? – Codo