CGContext不保留渲染线

时间:2013-05-01 09:37:55

标签: ios core-graphics cgcontext

我有一个drawRect实现:

- (void)drawRect:(CGRect)rect
{
    CGContextRef ctx = UIGraphicsGetCurrentContext();

    if (self.colorToRender)
    {
        CGContextSetStrokeColorWithColor(ctx, self.colorToRender.CGColor);
    }
    else
    {
        CGContextSetStrokeColorWithColor(ctx,[UIColor whiteColor].CGColor);
    }

    CGContextBeginPath(ctx);
    CGContextMoveToPoint(ctx, self.center.x, self.center.y);
    CGContextAddLineToPoint(ctx, self.pointToRender.x, self.pointToRender.y);
    CGContextStrokePath(ctx);
}

每次渲染一条线,但渲染的线条永远不会留在屏幕上。

如何将新线渲染到屏幕以保留先前渲染的线?

1 个答案:

答案 0 :(得分:0)

每次视图需要绘图时都会调用drawRect。如果要绘制多行,则必须在drawRect方法中再次绘制每一行。

添加一行时,将该行添加到可在drawRect方法中使用的数组中,以确定要绘制的行。

- (void)drawRect:(CGRect)rect
{
    CGContextRef ctx = UIGraphicsGetCurrentContext();

    if (self.colorToRender)
    {
        CGContextSetStrokeColorWithColor(ctx, self.colorToRender.CGColor);
    }
    else
    {
        CGContextSetStrokeColorWithColor(ctx,[UIColor whiteColor].CGColor);
    }


    // For each line you want to draw:
    for (MyLine *thisLine in myLines) {
        CGContextMoveToPoint(ctx, thisLine.startPoint.x, thisLine.startPoint.y);
        CGContextAddLineToPoint(ctx, thisLine.endPoint.x, thisLine.endPoint.y);
        CGContextStrokePath(ctx);
    }

}