UIGraphicsGetImageFromCurrentImageContext contrapartida en el escritorio Cocoa?

Estoy intentando crear una aplicación de pintura Mac simple. En iOS utilicé UIGraphicsGetImageFromCurrentImageContext para actualizar la image de un UIImageView cuando toco Movido. Ahora estoy tratando de activar la misma cosa, pero en una aplicación de Mac, quiero hacer lo siguiente:

myNSImageView.image = UIGraphicsGetImageFromCurrentImageContext(); 

Pero esa function solo existe en el toque de cocoa y no dentro del marco de cocoa, ¿hay consejos sobre dónde / si puedo encontrar una function similar en el cocoa?

Gracias.

Actualizar

Algún código adicional para completar.

 - (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; 

}

El resultado que obtengo ahora es que la pintura funciona bien en la parte superior de la vista, pero bot el rest. Al igual que en esta image (la parte roja debe ser canvasView):

introduzca la descripción de la imagen aquí

 NSInteger width = 1024; NSInteger height = 768; CGContextRef contextRef = CGBitmapContextCreate(0, width, height, 8, width*4, [NSColorSpace genericRGBColorSpace].CGColorSpace, kCGImageAlphaPremultipliedFirst); CGContextSetRGBStrokeColor(contextRef, 49.0/255.0, 147.0/255.0, 239.0/255.0, 1.0); CGContextFillRect(contextRef, CGRectMake(0.0f, 0.0f, width, height)); CGImageRef imageRef = CGBitmapContextCreateImage(contextRef); NSImage* image = [[NSImage alloc] initWithCGImage:imageRef size:NSMakeSize(width, height)]; CFRelease(imageRef); CFRelease(contextRef); 
 NSGraphicsContext * graphicsContext = [NSGraphicsContext currentContext]; CGContextRef contextRef = (CGContextRef) [graphicsContext graphicsPort]; CGContextRef imageContextRef = CGBitmapContextCreate(0, width, height, 8, width*4, [NSColorSpace genericRGBColorSpace].CGColorSpace, kCGImageAlphaPremultipliedFirst); 

Supongamos, primero, que hay un context actual y luego crea un context separado.

 CGContextSetRGBStrokeColor(contextRef, 49.0/255.0, 147.0/255.0, 239.0/255.0, 1.0); CGContextSetLineWidth(contextRef, 1.0); (etc.) 

Y luego se dibuja en el context que usted supone que existe, no en el context que creó.

 CGImageRef imageRef = CGBitmapContextCreateImage(imageContextRef); 

Y luego creas una image del context que creaste y nunca se dibujó.

[NSGraphicsContext currentContext] el bash de get [NSGraphicsContext currentContext] y su puerto de charts. No puede asumir que hay un context actual fuera de drawRect: todos modos. En cambio, dibuja en el context que creaste.