我在将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

10-08 05:28