J'essaie de créer une application de peinture simple pour Mac. Sur iOS, j'ai utilisé UIGraphicsGetImageFromCurrentImageContext pour mettre à jour l'image d'un UIImageView lorsque l'on touche à un objet. J'essaie maintenant d'activer la même chose, mais dans une application Mac, je veux faire.. :
myNSImageView.image = UIGraphicsGetImageFromCurrentImageContext();
Mais cette fonction n'existe que sur cocoa-touch et pas dans le cadre de cocoa, des conseils sur où/si je peux trouver une fonction similaire dans Cocoa ?
Merci.
Mise à jour
Un peu de code supplémentaire pour être complet.
- (void)mouseDragged:(NSEvent *)event
{
NSInteger width = canvasView.frame.size.width;
NSInteger height = canvasView.frame.size.height;
NSGraphicsContext * graphicsContext = [NSGraphicsContext currentContext];
CGContextRef contextRef = (CGContextRef) [graphicsContext graphicsPort];
CGContextRef imageContextRef = CGBitmapContextCreate(0, width, height, 8, width*4, [NSColorSpace genericRGBColorSpace].CGColorSpace, kCGImageAlphaPremultipliedFirst);
NSPoint currentPoint = [event locationInWindow];
CGContextSetRGBStrokeColor(contextRef, 49.0/255.0, 147.0/255.0, 239.0/255.0, 1.0);
CGContextSetLineWidth(contextRef, 1.0);
CGContextBeginPath(contextRef);
CGContextMoveToPoint(contextRef, lastPoint.x, lastPoint.y);
CGContextAddLineToPoint(contextRef, currentPoint.x, currentPoint.y);
CGContextDrawPath(contextRef,kCGPathStroke);
CGImageRef imageRef = CGBitmapContextCreateImage(imageContextRef);
NSImage* image = [[NSImage alloc] initWithCGImage:imageRef size:NSMakeSize(width, height)];
canvasView.image = image;
CFRelease(imageRef);
CFRelease(imageContextRef);
lastPoint = currentPoint;
}
Le résultat que j'obtiens maintenant est que la peinture fonctionne bien dans la partie supérieure de la vue, mais bâcle le reste. Comme sur cette image (la partie rouge devrait être le canvasView) :