CoreGraphics Разноцветная линия - PullRequest
4 голосов
/ 26 октября 2010

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

        CGContextSetLineWidth(ctx, 1.0);

        for(int idx = 0; idx < routeGrabInstance.points.count; idx++)
        {
            CLLocation* location = [routeGrabInstance.points objectAtIndex:idx];

            CGPoint point = [mapView convertCoordinate:location.coordinate toPointToView:self.mapView];

            if(idx == 0)
            {
                // move to the first point
                UIColor *tempColor = [self colorForHex:[[routeGrabInstance.pointHeights objectAtIndex:idx] doubleValue]];
                CGContextSetStrokeColorWithColor(ctx,tempColor.CGColor);
                CGContextMoveToPoint(ctx, point.x, point.y);

            }
            else
            {
                    UIColor *tempColor = [self colorForHex:[[routeGrabInstance.pointHeights objectAtIndex:idx] doubleValue]];
                    CGContextSetStrokeColorWithColor(ctx,tempColor.CGColor);
                    CGContextAddLineToPoint(ctx, point.x, point.y);
            }
        }

        CGContextStrokePath(ctx);

Ответы [ 2 ]

4 голосов
/ 26 октября 2010

CGContextSetStrokeColorWithColor только изменяет состояние контекста, но не выполняет рисование.Единственный рисунок, сделанный в вашем коде, - это CGContextStrokePath в конце.Поскольку каждый вызов CGContextSetStrokeColorWithColor переопределяет значение, установленное предыдущим вызовом, чертеж будет использовать последний набор цветов.

Вам необходимо создать новый путь, задать цвет и затем рисовать в каждом цикле.Как то так:

for(int idx = 0; idx < routeGrabInstance.points.count; idx++)
{
    CGContextBeginPath(ctx);
    CGContextMoveToPoint(ctx, x1, y1);
    CGContextAddLineToPoint(ctx, x2, y2);
    CGContextSetStrokeColorWithColor(ctx,tempColor.CGColor);
    CGContextStrokePath(ctx);
}
0 голосов
/ 26 октября 2010

CGContextSetStrokeColorWithColor устанавливает цвет обводки в контексте. Этот цвет используется, когда вы обводите путь, он не действует, когда вы продолжаете строить путь.

Вам нужно обводить каждую строку отдельно (CGContextStrokePath).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...