Si vous avez déjà le CGPath, il vous suffit d'utiliser CGContextAddPath
et CGContextClip
, et après cela vous pouvez dessiner votre UIImage dans ce contexte. Si vous voulez simplement afficher l'image découpée, ce contexte pourrait être le contexte actuel de la méthode DrawRect
de votre vue. Si vous voulez vraiment avoir les données d'image rognées, le contexte serait probablement un CGBitmapContext
, quelque chose comme ceci:
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
size_t bytesPerPixel = 1;
size_t bytesPerRow = bmpWidth * bytesPerPixel;
size_t bmpDataSize = (bytesPerRow * bmpHeight);
unsigned char *bmpData = malloc(bmpDataSize);
memset(bmpData, 0, bmpDataSize);
CGContextRef bmpCtx = CGBitmapContextCreate(bmpData, bmpWidth, bmpHeight, 8, bytesPerRow, colorSpace, kCGImageAlphaNone | kCGBitmapByteOrderDefault);
(l'exemple de code est un bitmap en échelle de gris parce que j'avais ce code prêt, mais il est alors pour dessiner réellement l'image découpée dans le contexte bitmap, vous feriez quelque chose comme ça (j'écris ce code de la mémoire, donc il y a peut-être être quelques erreurs):
// theContext could be
// UIGraphicsGetCurrentContext()
// or the bmpCtx
CGContextAddPath(theContext, yourCGPath);
CGContextClip(theContext);
// not sure you need the translate and scale...
CGContextTranslateCTM(theContext, 0, bmpHeight);
CGContextScaleCTM(theContext, 1, -1);
CGContextDrawImage(theContext, rect, yourUIImage.CGImage);
Quelle est votre question? Avez-vous besoin d'aide pour quoi? Dessiner le rectangle? – vfn
J'ai besoin d'aide pour afficher un UIImage écrêté. Le rectangle est bien dessiné. Je reçois également un CGPath correctement chaque fois que l'utilisateur déplace l'une des 4 extrémités du rectangle. Comment puis-je l'utiliser pour découper l'UIImage en arrière-plan? –