如何使用CGContextRef使View类中的Drawing方法工作?

时间:2010-03-27 20:58:17

标签: iphone drawing cgcontext drawrect

我在View类中有这两种方法。当视图被初始化时,总是会调用drawRect方法。但我无法使用 drawLine 方法。它被调用时什么都不做。我应该处理cgimagecontext或类似的东西吗?请帮助!!

- (void)drawRect:(CGRect)rect {
    // Drawing code
    // Drawing code
    CGContextRef contextRef = UIGraphicsGetCurrentContext();
    //CGContextSetRGBFillColor(contextRef, 0, 0, 255, 1);
    CGContextSetRGBStrokeColor(contextRef, 0, 0, 0, 1);
    CGContextSetLineWidth(contextRef, 5.0);
    CGContextBeginPath(contextRef);
    CGContextMoveToPoint(contextRef, 0, 0);
    CGContextAddLineToPoint(contextRef, 320, 480);
    CGContextStrokePath(contextRef);
}

    -(void)drawLine:(CGPoint)from to:(CGPoint) to {
    // Drawing code
    CGContextRef contextRef = UIGraphicsGetCurrentContext();
    //CGContextSetRGBFillColor(contextRef, 0, 0, 255, 1);
    CGContextSetRGBStrokeColor(contextRef, 0, 128, 0, 1);
    CGContextSetLineWidth(contextRef, 5.0);
    CGContextBeginPath(contextRef);
    CGContextMoveToPoint(contextRef, 0, 0);
    CGContextAddLineToPoint(contextRef, 320, 50);
    CGContextStrokePath(contextRef);

}

2 个答案:

答案 0 :(得分:3)

你是否从-drawRect中调用-drawLine?您需要在drawRect方法中的视图中进行所有绘制。如果您从其他地方调用-drawLine,它将无效。

答案 1 :(得分:1)

你只能画画。如果要通过drawLine方法绘制自定义线,请将drawrect中的硬编码点替换为变量。然后,您可以在drawLine方法中设置这些变量,最后调用[self setNeedsDisplay]。