我正在绘制一个图表,其中每个图形点都有一个点:
要绘制图形线我正在使用UIBezierPath:moveToPoint:并绘制点我使用UIBezierPath在每个点绘制两个圆:makeCircleAtLocation:。
如何删除通过每个点的图形线?这个点只是内部的纯白色?
TIA
代码:
- (void) addDotAtLocation:(CGPoint)location radius:(CGFloat)radius withInnerColor: (UIColor*) innerColor andOuterColor: (UIColor*) outerColor
{
[outerColor setFill];
UIBezierPath *circle = [self makeCircleAtLocation:location radius:5.0f];
[circle fill];
[innerColor setFill];
circle = [self makeCircleAtLocation:location radius:4.0f];
[circle fill];
}
- (UIBezierPath *) makeCircleAtLocation:(CGPoint)location radius:(CGFloat)radius
{
UIBezierPath *path = [UIBezierPath bezierPath];
[path addArcWithCenter:location
radius:radius
startAngle:0.0
endAngle:M_PI * 2.0
clockwise:YES];
return path;
}
UIBezierPath *barGraph = [UIBezierPath bezierPath];
CGPoint plotPoint = ...
[barGraph moveToPoint:plotPoint];
for (int ii = 1; ii < [self.testData count]; ++ii)
{
dataPoint = self.testData[ii];
x = [self convertTimeToXPoint:dataPoint.time];
y = [self convertDataToYPoint:dataPoint.dataUsage];
plotPoint = CGPointMake(x, y);
[barGraph addLineToPoint:plotPoint];
[self addDotAtLocation:plotPoint radius:5.0 withInnerColor:[UIColor whiteColor] andOuterColor:[UIColor blackColor]];
}
答案 0 :(得分:4)
尝试区分构建 bezier路径(它只是路径)和绘制路径(抚摸和/或填充)。 绘制的顺序是“分层”顺序。所以你想要描绘你的图形线 - 所有你的图形线 - 首先,然后你只想描边并填充你的圆。
这不是你现在正在做的事情。你首先构建图形bezier路径,但是你抚摸和填充你的圈子,然后只有然后你划过图形路径当然它最终“在前面”。
所以,这是你的代码(为了清晰起见而浓缩):
UIBezierPath *barGraph = [UIBezierPath bezierPath];
[barGraph moveToPoint:plotPoint]; // this does NOT draw
for (int ii = 1; ii < [self.testData count]; ++ii)
{
// ...
[barGraph addLineToPoint:plotPoint]; // this does NOT draw
[self addDotAtLocation:...]]; // THIS DRAWS!
}
// and you see we still have not drawn any of the graph lines yet
因此,你显然正在按照你想要的顺序画画。
答案 1 :(得分:0)
[circle fill];
圈出你的路径名称