Я испытываю некоторые затруднения с помощью 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);
}
спасибо за помощь
Вставьте этот код непосредственно перед установкой цвета обводки во второй раз:
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