iOS a Mac GraphicContext Explicación / Conversión

Llevo dos años programando en iOS y nunca en mac. Estoy trabajando en una pequeña utilidad para manejar algunas necesidades simples de imagen que tengo en mi desarrollo de iOS. De todos modos, tengo un código de trabajo en iOS que funciona perfectamente pero no tengo ni idea de qué equivalentes son para mac.

He intentado un montón de cosas diferentes, pero realmente no entiendo cómo iniciar un contexto de gráficos en Mac fuera de un método "drawRect:". En el iPhone solo usaría UIGraphicsBeghinImageContext (). Sé que otras publicaciones han dicho que usan lockFocus / unlockFocus pero no estoy seguro de cómo hacer que eso funcione para mis necesidades. Ah, y realmente echo de menos la propiedad "CGImage" de UIImage. No entiendo por qué NSImage no puede tener uno, aunque suena un poco más complicado que eso.

Aquí está mi código de trabajo en iOS: básicamente, solo crea una imagen reflejada desde una máscara y las combina:

    UIImage *mask = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"Mask_Image.jpg" ofType:nil]];
    UIImage *image = [UIImage imageNamed::@"Test_Image1.jpg"];
    UIGraphicsBeginImageContextWithOptions(mask.size, NO, [[UIScreen mainScreen]scale]);
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGContextTranslateCTM(ctx, 0.0, mask.size.height);
    CGContextScaleCTM(ctx, 1.f, -1.f);
    [image drawInRect:CGRectMake(0.f, -mask.size.height, image.size.width, image.size.height)];
    UIImage *flippedImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    CGImageRef maskRef = mask.CGImage;
    CGImageRef maskCreate = CGImageMaskCreate(CGImageGetWidth(maskRef),
                                              CGImageGetHeight(maskRef),
                                              CGImageGetBitsPerComponent(maskRef),
                                              CGImageGetBitsPerPixel(maskRef),
                                              CGImageGetBytesPerRow(maskRef),
                                              CGImageGetDataProvider(maskRef), NULL, false);
    CGImageRef masked = CGImageCreateWithMask([flippedImage CGImage], maskCreate);

    CGImageRelease(maskCreate);

    UIImage *maskedImage = [UIImage imageWithCGImage:masked];
    CGImageRelease(masked);

    UIGraphicsBeginImageContextWithOptions(CGSizeMake(image.size.width, image.size.height + (image.size.height * .5)), NO, [[UIScreen mainScreen]scale]);

    [image drawInRect:CGRectMake(0,0, image.size.width, image.size.height)];
    [maskedImage drawInRect:CGRectMake(0, image.size.height, maskedImage.size.width, maskedImage.size.height)];

    UIImage *anotherImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext(); 

//do something with anotherImage

¿Alguna sugerencia para lograr esto (simplemente) en la Mac?

Respuestas a la pregunta(4)

Su respuesta a la pregunta