iPhone CGContext : drawing two lines with two different colors

标签 iphone line draw cgcontext

我在 iPhone 应用程序中使用 CGContext 时遇到一些问题。我试图用不同的颜色绘制几条线,但所有线最终总是具有最后使用的颜色。我尝试了几种方法,但并不幸运。

我建立了一个小型示例项目来处理这个问题。这是我的代码,我在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

关于iPhone CGContext : drawing two lines with two different colors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3041776/

相关文章:

ios - 在 iPhone 上存储静态内容?

c++ - 用手指在 Canvas 上绘图。 Tizen 原生应用程序

command - 为什么 eth(以太坊)不工作?

python 正则表达式匹配行是否存在

python - 从 Pandas 数据框绘制折线图(多条线)

WebGL 如何绘制曲线

swift text.draw 方法搞乱了 CGContext

iphone - iOS Storyboard 连接松动?

iphone - 在不将其放在当前 UINavigationController 堆栈上的情况下创建新 View 的转场的正确方法是什么?

iPhone和核心数据: how to retain user-entered data between updates?