2016-08-01 13 views
-2

Wie zeichne ich in ObjectiveC und Cocoa (auf MacOS, nicht iOS) einen Halbkreis im Halbkreis? Derzeit ist ich einen sehr einfachen Kreis machen kann, dass meine Bedürfnisse wie das paßt:Wie zeichne ich einen Halbkreis in ObjectiveC und Cocoa für MacOS?

NSRect rect = CGRectMake(location.x, location.y, 2*radius, 2*radius) 
rect.cornerRadius = radius 

Dieses einen vollen Kreis machen, aber wie mache ich einen Halbkreis, vollständig im Schatten in? Der Grund, warum ich diese besondere Methode verwenden einen Kreis zu zeichnen, weil es einfach ist, für mich auf den Rahmen eines CAShapeLayer „rect“ hinzufügen, die das Argument ist, dass

[[self layer] addSublayer:rect]; 

nimmt, wo selbst das bezieht sich aktuelle CocoaView.

Beispiel:

semicircle

Schließlich muss diese in Core Animation getan werden, nicht mit dem iOS Rahmen (wie die Tags implizieren).

+2

Was meinst du mit „a zeichnen im Halbkreis geblasen "? Möchten Sie einen Teil eines Kreises (eines Bogens) zeichnen, aber keinen vollen Kreis? Oder etwas mehr oval? Fazit: Vielleicht können Sie Ihre Frage bearbeiten, ein Bild teilen oder was Sie meinen. Als Antwort auf Ihre Frage könnten Sie einen 'NSBezierPath' erstellen und ihn streichen (z. B. im' drawRect' der benutzerdefinierten 'NSView'-Unterklasse). Oder Sie können 'CGPathRef' erstellen und als Pfad für einen' CAShapeLayer' definieren. Aber die Besonderheiten des Pfades hängen ganz davon ab, wie dieses "geblubbert" aussieht. – Rob

+0

@ Rob - Ich habe eine bessere Erklärung mit Bild von "sprudelte in" hinzugefügt. –

Antwort

1

Dies ist der Code zum Zeichnen des Bogens mit UIBezierPath. Es ist nicht genau das, was Sie wollen, aber Sie können den Radius ändern

 - (void)drawRect:(CGRect)rect 
    { 
     UIBezierPath *blueHalf = [UIBezierPath bezierPath]; 
     [blueHalf addArcWithCenter:CGPointMake(100, 100) radius:90.0 startAngle:-M_PI_2 endAngle:M_PI_2 clockwise:YES]; 
     [blueHalf setLineWidth:4.0]; 
     [[UIColor blueColor] setStroke]; 
     [blueHalf stroke]; 
    } 

, wenn Sie dies in Core Graphics zu tun:

- (void)drawRect:(CGRect)rect 
{ 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGContextSetLineWidth(context, 4); 

    CGContextSetStrokeColorWithColor(context, [[UIColor blueColor] CGColor]); 
    CGContextAddArc(context, 100, 100, 90, -M_PI_2, M_PI_2, FALSE); 
    CGContextStrokePath(context); 
} 

enter image description here

+0

Große Antworten! Ich bin noch neu in Cocoa, also in meiner Datei mit drawRect, welche Import- oder include-Anweisung sollte ich hinzufügen (für beide Antworten)? Außerdem zeigt Ihr Bild einen Halbkreis, der nicht ausgefüllt ist (wie der in der Antwort dargestellte Halbkreis). Wie kann ich es ausfüllen? –

+0

Sie müssen UIKit @import verwenden, um UIBezierPath zu verwenden. Hier ist der Link https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIBezierPath_class/index.html#//apple_ref/occ/cl/ UIBezierPath –

+0

Außerdem ist das Bild, das Sie gezeigt haben, ein Halbkreis, der definitiv nicht ausgefüllt ist, wie der Halbkreis in meiner Antwort. Bitte stellen Sie sicher, dass Ihre Antwort mein Bild auf diese Weise widerspiegelt. –