0

イメージビューに表示されるランダムなグラフを描画しようとしています。このコードを試します

-(void)createGraph{
        UIGraphicsBeginImageContext(self.drawImage.frame.size);
        [drawImage.image drawInRect:CGRectMake(0, 0, drawImage.frame.size.width, drawImage.frame.size.height)];    
        CGContextRef context    = UIGraphicsGetCurrentContext();
        CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
        CGContextSetLineWidth(context, 2.0);
        int i = 0;
        while (i<=20) {
            int r = rand() % 100;

            CGContextMoveToPoint(context, 20, 320);
            CGContextAddLineToPoint(context, linePoint.x+20+i*r, linePoint.y+320-i*r);         
            CGContextStrokePath(context);   
            i++;

            NSLog(@"random value %d",r);
        }
        drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
    }

しかし、それは単線で対角線を描いています。下の画像にショーがあります

グラフの線を描くことを期待しています!コアグラフィックスの使用 ここに画像の説明を入力

4

2 に答える 2

1

まずCGContextAddLineToPoint、ループに入れることはできません。viewDidLoadループを(ちょうど)削除し、たとえば、各反復で別のループを作成し-(void)createGraph、最後のポイントと次のポイントを指定して呼び出します。に割り当てる最後のポイントCGContextMoveToPointと、次のポイントをに割り当てますCGContextAddLineToPoint。ちなみにCGContextBeginPath(context);直後に追記CGContextSetLineWidth(context, 2.0);

于 2012-07-18T13:36:05.193 に答える
1
- (void)viewDidLoad
{
    //X_Line, Y_Line, x and y are integer variables
    X_Line = 20;
    Y_Line = 320;
    for(int i=0; i<10; i++)
    {
        x = x + arc4random() % 100;
        y = x + arc4random() % 100;
        [self createGraph];
    }
}

-(void)createGraph
{  
    UIGraphicsBeginImageContext(imgView.frame.size);
    [imgView.image drawInRect:CGRectMake(0, 0, imgView.frame.size.width, imgView.frame.size.height)];    
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
    CGContextSetLineWidth(context, 2.0);
    CGContextMoveToPoint(context, X_Line, Y_Line);
    CGContextAddLineToPoint(context, x , y);         
    CGContextStrokePath(context);   
    imgView.image = UIGraphicsGetImageFromCurrentImageContext();

    X_Line = x;
    Y_Line = y;
}
于 2012-07-18T14:48:24.000 に答える