2

mac os x のタイマー アプリで、時計の領域を緑、黄、オレンジ、赤でマークしたいと考えています。以下のスクリーンショットを参照してください。そして、経過時間を透明なグレーで塗りつぶしたいと思います。

ただし、スクリーンショットでわかるように、円弧セグメントのみが塗りつぶされています。しかし、私はセクター全体が満たされることを望んでいます。私にできる唯一のことは[thePath fill];

いつものように、私は何か間違ったことをしていると思います。しかし、何?

ここに画像の説明を入力


電話

[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];

}
4

1 に答える 1

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];

}
于 2012-12-28T12:32:36.393 に答える