Как я могу нарисовать сектор с радиальным градиентом (iphone) - PullRequest
1 голос
/ 14 июля 2011

Как нарисовать сектор (заполненную дугу) с радиальным градиентом в объективе c (Базовая графика) Я использую

CGContextDrawRadialGradient

но рисует круг. Будет хорошо, если вы скажете мне, как заполнить любую фигуру радиальным градиентом. Спасибо

1 Ответ

16 голосов
/ 14 июля 2011

Добавить путь к текущему контексту, который определяет желаемую форму, и обрезать контекст перед рисованием. Пример кода:

- (void)drawRect:(CGRect)rect
{
    CGPoint c = self.center ;
    // Drawing code
    CGContextRef cx = UIGraphicsGetCurrentContext();

    CGContextSaveGState(cx);
    CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB();

    CGFloat comps[] = {1.0,1.0,0.0,1.0,0.0,1.0,0.0,1.0};
    CGFloat locs[] = {0,1};
    CGGradientRef g = CGGradientCreateWithColorComponents(space, comps, locs, 2);


    CGMutablePathRef path = CGPathCreateMutable();
    CGPathMoveToPoint(path, NULL, c.x, c.y);
    CGPathAddLineToPoint(path, NULL, c.x, c.y-100);
    CGPathAddArcToPoint(path, NULL, c.x+100, c.y-100, c.x+100, c.y, 100);
    CGPathAddLineToPoint(path, NULL, c.x, c.y);

    CGContextAddPath(cx, path);
    CGContextClip(cx);

    CGContextDrawRadialGradient(cx, g, c, 1.0f, c, 320.0f, 0);

    CGContextRestoreGState(cx);   
    ... // Do some more drawing may be
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...