Цель C: Как использовать kCGBlendModeHue и kCGBlendModeSaturation? - PullRequest
3 голосов
/ 28 ноября 2011

Я пытался использовать CGContextSetRGBStrokeColor, прежде чем теперь я хочу использовать другой способ для изменения цвета.

Сейчас я использую изображение в качестве обводки, и я хочу изменить его цвет с помощью этих CGBlendModes.

Как я смогу контролировать оттенок и насыщенность, используя kCGBlendModeHue и kCGBlendModeSaturation?Я буду использовать его для изменения цвета обводки при нажатии кнопки.

Ответы [ 2 ]

1 голос
/ 03 декабря 2011

Благодаря ответу @Patrick Tescher, это работает:

- (void) changeToHue:(float)hue saturation:(float)saturation {
    UIGraphicsBeginImageContext(self.bounds.size);
    CGContextRef context = UIGraphicsGetCurrentContext();    
    UIView *hueBlend = [[UIView alloc] initWithFrame:self.bounds];
    hueBlend.backgroundColor = [UIColor colorWithHue:hue saturation:saturation brightness:1 alpha:1];
    CGContextDrawImage(context, self.bounds, self.image.CGImage);
    CGContextSetBlendMode(context, kCGBlendModeHue);
    [hueBlend.layer renderInContext:context];
    self.image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();    
}
1 голос
/ 02 декабря 2011

Вы захотите сделать что-то вроде этого:

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextDrawImage(context, rect, image.CGImage);
CGContextSetBlendMode(context, kCGBlendModeHue);
CGContextDrawImage(context, rect, overlay.CGImage);
...