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