0

我有一个 for 循环,在 for 循环中我执行以下操作,这会在我的图表背景上创建一个折线图,但是即使数据不同,它也会在每个背景上显示完全相同的线条图像。

UIGraphicsBeginImageContext(test.size);

CGContextRef c = UIGraphicsGetCurrentContext();
CGContextFlush(c);

CGContextSetAllowsAntialiasing(c, true);

CGContextTranslateCTM(c, 0, test.size.height);
CGContextScaleCTM(c, 1.0, -1.0);

CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();

CGFloat components[] = {0.0, 0.0, 1.0, 1.0};

CGColorRef color = CGColorCreate(colorspace, components);

CGContextSetStrokeColorWithColor(c, color);

CGContextMoveToPoint(c, 0, 0);

      if(maxPoints > 0)
      {
          float xSpacing = (float)330.0f/(float)[allScorePointsSubset count];
          int currentPoint;
          float currentX;
          float currentY;

             for (int j = 0; j < [allScorePointsSubset count]; j++) 
             {
                NSString *currentPointString = [allScorePointsSubset objectAtIndex:j];
                currentPoint = (int)[currentPointString intValue];

                if(currentPoint < 0)
                  currentPoint = 0;

                currentX = (j+1)*xSpacing;
                currentY = currentPoint / 100.0f * 200.0f;

                CGContextAddLineToPoint(c, (int)currentX, (int)currentY);

              }

      }

  CGContextStrokePath(c);
  CGColorSpaceRelease(colorspace);
  CGColorRelease(color);

  UIImage *graphImage = UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();


  CCSprite* answerMenuNormalSprite = [CCSprite spriteWithCGImage:graphImage.CGImage key:   [NSString stringWithFormat:@"answerMenuNormalSprite_%f", i]];
            [answerMenuNormalSprite setPosition:ccp(176,66)];


  [[background objectAtIndex:0] addChild:answerMenuNormalSprite z:0 tag:i];

有没有人知道我做错了什么,这是否必须采用以下方法

-(void)draw
{
   [super draw];
}

谢谢

4

1 回答 1

0

事实证明,我的计数器没有正确递增,问题只是没有在以下行中为图像提供唯一键

CCSprite* answerMenuNormalSprite = [CCSprite spriteWithCGImage:graphImage.CGImage key:   [NSString stringWithFormat:@"answerMenuNormalSprite_%f", i]];
于 2012-05-09T09:09:45.557 回答