2013-08-03 2 views
0

я должен нарисовать линию .I использовать ниже code.My фактической потребности, чтобы рисовать линии из точек, которые присутствуют в NSMutableArrayнедопустимый контекст 0x0 для рисования линии графа

- (void)drawLineGraph:(NSMutableArray *)lineGraphPoints 
{ 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor); 
    CGContextSetLineWidth(context, 1.0f); 
    CGContextMoveToPoint(context, 10, 10); 
    CGContextAddLineToPoint(context, 100, 50); 
    CGContextStrokePath(context); 
} 

Я получаю контекст как nil.I получить следующее сообщение об ошибке

Aug 3 10:46:04 ABC-Mac-mini.local Sample[2077] <Error>: CGContextSetStrokeColorWithColor: invalid context 0x0 
Aug 3 10:46:04 ABC-Mac-mini.local Sample[2077] <Error>: CGContextSetLineWidth: invalid context 0x0 
Aug 3 10:46:04 ABC-Mac-mini.local Sample[2077] <Error>: CGContextMoveToPoint: invalid context 0x0 
Aug 3 10:46:04 ABC-Mac-mini.local Sample[2077] <Error>: CGContextAddLineToPoint: invalid context 0x0 
Aug 3 10:46:04 ABC-Mac-mini.local Sample[2077] <Error>: CGContextDrawPath: invalid context 0x0 

массив lineGraphPoints имеет точки, которые должны быть plotted.Can кто-нибудь помочь мне нарисовать линейный график?

+0

Эта функция вызвана из 'drawRect:'? Если нет, то 'UIGraphicsGetCurrentContext()' будет возвращать нуль. –

+0

@ H2CO3: Спасибо, хорошо работает –

ответ

1

То, о чем вы просите, легко выполнить, перечислив через массив значений CGPoint. Также не забудьте переопределить метод drawRect: и добавьте туда код чертежа. См. Пример ниже, как использовать значения CGPoint в Mutable Array для построения строки в графическом контексте.

- (void)drawRect:(CGRect)rect { 
    NSMutableArray *pointArray = [[NSMutableArray alloc] initWithObjects: 
    [NSValue valueWithCGPoint:CGPointMake(10, 10)], 
    [NSValue valueWithCGPoint:CGPointMake(10, 10)], 
    [NSValue valueWithCGPoint:CGPointMake(12, 16)], 
    [NSValue valueWithCGPoint:CGPointMake(20, 22)], 
    [NSValue valueWithCGPoint:CGPointMake(40, 100)], nil]; 

    // Drawing code 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor); 
    CGContextSetLineWidth(context, 1.0f); 

    for (NSValue *value in pointArray) { 
    CGPoint point = [value CGPointValue]; 

     if ([pointArray indexOfObject:value] == 0) { 
      CGContextMoveToPoint(context, point.x, point.y); 
     } else { 
      CGContextAddLineToPoint(context, point.x, point.y); 
     } 
    } 

    CGContextStrokePath(context); 
    [pointArray release]; 
} 

Я инстанцирован изменяемый массив внутри метода DrawRect но вы могли бы объявить экземпляр этого в файле заголовка и экземпляр, где вы предпочитаете и добавлять свои значения точки к нему.

+0

Спасибо, что он работает отлично –

Смежные вопросы