如何正确填充弧扇区NSBezierPath,Objective-C

时间:2012-12-28 12:11:21

标签: objective-c fill nsbezierpath sector

在mac os x上我的计时器应用程序我想用绿色,黄色,橙色和红色标记我的时钟区域。见下面的截图。我想用透明的灰色填充经过的时间。

但是,正如您在屏幕截图中看到的那样,只有弧段被填充。但我希望整个部门都能填补。我唯一能做的就是[thePath fill];

一如既往,我认为我做错了什么。但是什么?

enter image description here


呼叫

[self drawTheArcWithColor:path1  :liveAngle1  :[NSColor greenColor ]  :lineTheWidth];

方法

- (void) drawTheArcWithColor:(NSBezierPath*) thePath :(CGFloat) angle :(NSColor*) theColor :(CGFloat) line {

    [thePath setLineWidth:line];
    [thePath appendBezierPathWithArcWithCenter:centerPoint  radius:2+circleHeight/2 startAngle:angle endAngle:angle+90.0f];

    [theColor setStroke];
    [[NSColor grayColor] setFill];
    [thePath fill];
    [thePath stroke];

}

1 个答案:

答案 0 :(得分:4)

你需要在中心点开始路径,然后添加弧段(隐含地从中心点添加一条线到弧段的起点),最后关闭路径(从末尾创建一条隐含线)弧段到中心点。)

- (void) drawTheArcWithColor:(NSBezierPath*) thePath :(CGFloat) angle :(NSColor*) theColor :(CGFloat) line {

   [thePath setLineWidth:line];
   [thePath moveToPoint:centerPoint];
   [thePath appendBezierPathWithArcWithCenter:centerPoint  radius:2+circleHeight/2 startAngle:angle endAngle:angle+90.0f];
   [thePath closePath];

   [theColor setStroke];
   [[NSColor grayColor] setFill];
   [thePath fill];
   [thePath stroke];

}