Я пытаюсь нарисовать несколько простых линий с помощью iPhone / Touch SDK. Я хотел бы иметь возможность изменять цвет линий, но вызов CGContextSetRGBStrokeColor, по-видимому, не влияет на нарисованные линии, которые создаются с помощью CGContextAddLineToPoint, до фактического вызова CGContextStrokePath. Поэтому, если я делаю несколько вызовов, чтобы изменить цвет, только тот, который был сделан непосредственно перед CGContextStrokePath, имеет какой-либо эффект. Вот что я имею в виду:
- (void)drawRect:(CGRect)rect
{
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextMoveToPoint(ctx, 0, 0);
CGContextSetRGBStrokeColor(ctx,1,0,0,1);
CGContextAddLineToPoint(ctx, 100, 100);
//CGContextStrokePath(ctx);
CGContextSetRGBStrokeColor(ctx,0,1,0,1);
CGContextAddLineToPoint(ctx, 200, 300);
//CGContextStrokePath(ctx);
CGContextSetRGBStrokeColor(ctx,0,0,1,1);
CGContextStrokePath(ctx);
}
Полагаю, я делаю что-то ужасно неправильное, просто не могу понять, что именно. Я думал, что если я добавлю вызовы CGContextStrokePath, это поможет, это не так.
Смотрите обсуждение ниже, как я получил исправленный код:
- (void)drawRect:(CGRect)rect
{
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextBeginPath(ctx);
CGContextMoveToPoint(ctx, 0, 0);
CGContextSetRGBStrokeColor(ctx,1,0,0,1);
CGContextAddLineToPoint(ctx, 100, 100);
CGContextStrokePath(ctx);
CGContextClosePath(ctx);
CGContextBeginPath(ctx);
CGContextMoveToPoint(ctx, 100, 100);
CGContextSetRGBStrokeColor(ctx,0,1,0,1);
CGContextAddLineToPoint(ctx, 200, 300);
CGContextStrokePath(ctx);
}