English 中文(简体)
ICT: CGContextStroke 不断更新的道路
原标题:iOS: CGContextStrokePath with continual updates to path

I am wanting to build a small line graph that get updated when I call my setPointInGraph: method. Each time I call that, I want the graph to be updated with the point that I just added, and therefore draw a line from my last point. I see the problem in my code below, in drawRect: that it just keeps overwriting the old path.

- (void)setPointInGraph:(float)p {

    self.point = p;
    [self setNeedsDisplay];
}


- (void)drawRect:(CGRect)rect {

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGFloat maxX = CGRectGetMaxX(rect);
    CGFloat maxY = CGRectGetMaxY(rect);

    CGColorRef strokeColor = [self.lineColor CGColor];
    CGContextSetStrokeColorWithColor(context, strokeColor);
    CGContextSetLineWidth(context, self.lineWidth);
    CGContextBeginPath(context);                
    CGContextMoveToPoint(context, 0.0, maxY - maxY * self.point);
    CGContextAddLineToPoint(context, maxX * (point / count), maxY - maxY * self.point);
    CGContextStrokePath(context);

    count++;

}

在我选择的时候,我怎么能够绕过道路(例如财产)并更新道路? 我怎么能继续补充这条道路,不要超越它?

最佳回答

Use UIBezierPath. You can add new segments by calling addLineToPoint.

问题回答

Instead of creating a path in the graphics context, create a regular path which you then stroke:

path = CGPathCreateMutable();
CGPathAddLineToPoint(path, ...);

CGContextBeginPath(context);
CGContextAddPath(path);
CGContextStrokePath(context);

When you need to update the path, create a mutable copy of the previous path, and add the line to it:

path = CGPathCreateMutableCopy(lastPath);
CGPathRelease(lastPath);
CGPathAddLineToPoint(path, ...);

And then draw it again:

CGContextBeginPath(context);
CGContextAddPath(path);
CGContextStrokePath(context);




相关问题
List Contents of Directory in a UITableView

I am trying to list the contents of Ringtones directory in a TableView, however, I am only getting the last file in the directory in ALL cells, instead of file per cell. This is my code: - (...

iPhone NSUserDefaults persistance difficulty

In my app i have a bunch of data i store in the NSUserdefaults. This information consists of an NSObject (Object1) with NSStrings and NSNumbers and also 2 instances of yet another object (Object2). ...

Writing a masked image to disk as a PNG file

Basically I m downloading images off of a webserver and then caching them to the disk, but before I do so I want to mask them. I m using the masking code everyone seems to point at which can be found ...

Resize UIImage with aspect ratio?

I m using this code to resize an image on the iPhone: CGRect screenRect = CGRectMake(0, 0, 320.0, 480.0); UIGraphicsBeginImageContext(screenRect.size); [value drawInRect:screenRect blendMode:...

Allowing interaction with a UIView under another UIView

Is there a simple way of allowing interaction with a button in a UIView that lies under another UIView - where there are no actual objects from the top UIView on top of the button? For instance, ...

热门标签