iPhone CGContext: проведение двух линий с двумя различными цветами

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

Я настроил проект небольшой выборки заниматься той проблемой. Это - мой код, я использую в drawRect методе. Я пытаюсь потянуть красный и синюю строку:

- (void)drawRect:(CGRect)rect{
    NSLog(@"drawrect!");
    CGContextRef bluecontext = UIGraphicsGetCurrentContext(); 
    CGContextSetLineWidth(bluecontext, 2.0);
    CGContextSetStrokeColorWithColor(bluecontext, [UIColor blueColor].CGColor);
    CGContextMoveToPoint(bluecontext, 1, 1);
    CGContextAddLineToPoint(bluecontext, 100, 100);
    CGContextSetStrokeColorWithColor(bluecontext, [UIColor redColor].CGColor);
    CGContextAddLineToPoint(bluecontext, 200, 100);
    CGContextStrokePath(bluecontext);
}

спасибо за помощь

11
задан tipycalFlow 14 June 2013 в 12:59
поделиться

1 ответ

Вставьте этот код непосредственно перед установкой цвета обводки во второй раз:

CGContextStrokePath(bluecontext);
CGContextBeginPath(bluecontext);

Все вызовы AddLine и AddOther создают путь. Путь рисуется с помощью вызова типа StrokePath с использованием последних установленных цветов и других атрибутов. Вы пытаетесь нарисовать два отдельных пути, поэтому вы должны вызвать Begin и Stroke для каждого пути. Когда вы начинаете рисовать, Begin в некотором роде подразумевается, хотя не помешает назвать это самим. Основной процесс рисования следующий:

CGContextBeginPath(bluecontext); // clears any previous path
// add lines, curves, rectangles, etc...
CGContextStrokePath(bluecontext); // renders the path
22
ответ дан 3 December 2019 в 01:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: