Je voudrais créer un objet UIImage à partir du contexte graphique actuel. Plus spécifiquement, mon cas d'utilisation est une vue sur laquelle l'utilisateur peut dessiner des lignes. Ils peuvent tirer progressivement. Après avoir terminé, je voudrais créer un UIImage pour représenter leur dessin.Comment créer un UIImage à partir du contexte graphique actuel?
Voici ce que drawRect: me ressemble pour l'instant:
- (void)drawRect:(CGRect)rect
{
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextSaveGState(c);
CGContextSetStrokeColorWithColor(c, [UIColor blackColor].CGColor);
CGContextSetLineWidth(c,1.5f);
for(CFIndex i = 0; i < CFArrayGetCount(_pathArray); i++)
{
CGPathRef path = CFArrayGetValueAtIndex(_pathArray, i);
CGContextAddPath(c, path);
}
CGContextStrokePath(c);
CGContextRestoreGState(c);
}
... où _pathArray est de type CFArrayRef, et est peuplé chaque fois touchesEnded: est invoquée. Notez également que drawRect: peut être appelé plusieurs fois, au fur et à mesure que l'utilisateur dessine.
Lorsque l'utilisateur a terminé, j'aimerais créer un objet UIImage qui représente le contexte graphique. Des suggestions sur la façon de faire cela?
Les deux réponses ci-dessous fonctionnent. Notez qu'il existe une différence fonctionnelle entre les deux, à savoir que le rendu du calque dans le contexte de l'image rendra également l'arrière-plan du calque; appeler drawRect: ne le fait pas directement (dans mon cas, cela n'a pas d'importance). Je vais avec l'approche CALayer renderInContext en raison des complexités avec l'appel drawRect: directement (Voir http://lists.apple.com/archives/Cocoa-dev/2002/Apr/msg01846.html pour plus de détails). Merci! – figelwump