У меня есть CGContextRef
, и я могу нарисовать его и указать альфу, и если я попытаюсь его использовать, он отлично работает.Тем не менее, я пытаюсь раскрасить его (в настоящее время либо красным, либо зеленым), но в любом режиме наложения, который я выберу, альфа установлена на 1
(потому что я рисую с альфа как 1
).Рисование правильного цвета на самом деле не является жизнеспособным вариантом, так как я хотел бы иметь возможность раскрашивать UIImage
s, также загруженные из файловой системы, так как мне этого добиться?
Редактировать: Пример кода (ширина и высота - это предопределенные числа с плавающей точкой, точки - это массив CGPoints, все из которых находятся внутри контекста, а цвет - это UIColor с непрозрачностью 100%) -
UIGraphicsBeginImageContext(CGSizeMake(width,height));
CGContextRef contextRef = UIGraphicsGetCurrentContext();
CGContextClearRect(contextRef, CGRectMake(0.0f, 0.0f, width, height));
CGContextSetRGBStrokeColor(contextRef, 0.0f, 0.0f, 0.0f, 1.0f);
CGContextSetRGBFillColor(contextRef, 1.0f, 1.0f, 1.0f, 1.0f);
CGContextSetLineWidth(contextRef, lineWidth);
CGContextBeginPath(contextRef);
CGContextMoveToPoint(contextRef, points[0].x, points[0].y);
for (int i = 1; i < 4; i++) {
CGContextAddLineToPoint(contextRef, points[i].x, points[i].y);
}
CGContextAddLineToPoint(contextRef, points[0].x, points[0].y); // Encloses shape
CGContextDrawPath(contextRef, kCGPathFillStroke);
[color setFill];
CGContextBeginPath(contextRef);
CGContextSetBlendMode(contextRef, kCGBlendModeMultiply);
CGContextAddRect(contextRef, CGRectMake(0.0f, 0.0f, width, height));
CGContextDrawPath(contextRef, kCGPathFill);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Заранее благодарим за помощь
jrtc27