iPhone Кварц. Как создать подложку с использованием пути, а не растрового изображения?
В приложении для визуализации, которое я пишу, я хочу сформировать графику, используя подложку, созданную с помощью контура. Графика представляет собой горизонтальную прямоугольную полосу с различными формами, нарисованными внутри. На вершине этой прямоугольной полосы я хочу нарисовать эллипс, который будет действовать как мат, который формирует прямоугольную полосу, чтобы она выглядела нарисованной внутри эллипса. Как мне это сделать?
В этом упрощенном примере я пытаюсь - и не могу сделать фоновый синий прямоугольник в виде синих эллипсов, рисуя поверх него эллипс, используя различные режимы наложения.
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
[[colorDictionary objectForKey:@"blueSolid"] setFill];
CGContextFillRect(context, self.bounds);
//CGContextSetBlendMode(context, kCGBlendModeNormal);
CGContextSetBlendMode(context, kCGBlendModeDestinationIn);
CGContextFillEllipseInRect(context, self.bounds);
}
Спасибо дуг
ОБНОВЛЕНИЕ: РЕШЕНИЕ Вкратце: обтравочные контуры. Dooh! Следующий фрагмент кода создает эффект, после которого я получаю синий эллипс на красном фоне. Обратите внимание, синий эллипс создается путем ограничения синего прямоугольника формой эллипса. Это то, что мне нужно. Здорово.
Надеюсь, это поможет кому-то еще. Обтравочные контуры очень мощные. Приветствия.
CGContextRef context = UIGraphicsGetCurrentContext();
[[colorDictionary objectForKey:@"redSolid"] setFill];
CGContextFillRect(context, self.bounds);
CGContextBeginPath(context);
CGContextAddEllipseInRect(context, CGRectInset(self.bounds, 32, 32));
CGContextClip(context);
[[colorDictionary objectForKey:@"blueSolid"] setFill];
CGContextFillRect(context, self.bounds);
1 ответ
Вкратце: обтравочные контуры. Dooh! Следующий фрагмент кода создает эффект, после которого я получаю синий эллипс на красном фоне. Обратите внимание, синий эллипс создается путем ограничения синего прямоугольника формой эллипса. Это то, что мне нужно. Здорово.
Надеюсь, это поможет кому-то еще. Обтравочные контуры очень мощные. Приветствия.
CGContextRef context = UIGraphicsGetCurrentContext();
[[colorDictionary objectForKey:@"redSolid"] setFill];
CGContextFillRect(context, self.bounds);
CGContextBeginPath(context);
CGContextAddEllipseInRect(context, CGRectInset(self.bounds, 32, 32));
CGContextClip(context);
[[colorDictionary objectForKey:@"blueSolid"] setFill];
CGContextFillRect(context, self.bounds);