Usando CoreGraphics (dentro de mi método drawRect), estoy tratando de aplicar un modo de fusión a una imagen (png transparente), y luego ajusto el alfa del resultado. Asumo que esto debe hacerse en dos pasos, pero podría estar equivocado. Esto es lo que tengo hasta ahora (que funciona bien):iOS: procesamiento de imágenes de 2 pasos con CoreGraphics
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
//SET COLOR - EDIT... added a more practical color example
CGContextSetRGBFillColor(context, 0.0, 1.0, 0.0, 1);
//flips drawing context (apparently this is necessary)
CGContextTranslateCTM(context, 0.0, self.bounds.size.height);
CGContextScaleCTM(context, 1.0, -1.0);//flip context
//DRAW PIN IMAGE
UIImage *pin = [UIImage imageNamed:@"pin"];
CGRect pinrect = CGRectMake(12, 17, 25, 25);
CGContextDrawImage(context, pinrect, pin.CGImage);//draws image in context
//Apply blend mode
CGContextSetBlendMode(context, kCGBlendModeColor);
CGContextClipToMask(context, pinrect, pin.CGImage); // restricts drawing to within alpha channel
//fills context with mask, applying blend mode
CGContextFillRect(context, pinrect);
CGContextRestoreGState(context);
// -- Do something here to make result 50% transparent ?? --
Asumo que necesito para sacar todo esto en una especie de contexto por separado en algún lugar, llamar CGContextSetAlpha(...)
, y luego volver a llamar de nuevo a mi contexto original, pero no estoy seguro de cómo. Configurar el alfa antes de mi CGContextFillRect final solo cambiará la cantidad que se aplicó el modo de fusión, no el alfa de la imagen completa.
EDIT: captura de pantalla publicado
Gracias de antemano.
¿Qué sucede si llama a CGContextSetAlpha antes de dibujar la imagen? Es posible que también desee restablecerlo a 1 después de dibujar la imagen, pero antes de aplicar la mezcla. – ughoavgfhw
Gracias, pero lamentablemente se atenúa tanto la imagen como la cantidad en que se aplica el modo de fusión. es decir. Será 50% transparente y 50% cambiará a verde. Lo quiero 100% cambiado a verde y luego 50% transparente. – Chazbot
Todavía no entiendo cómo debería ser el resultado, ¿pueden proporcionarme algunas imágenes, por favor? –