Erstellen Sie eine farbige Blase / Kreis programmatisch in Objective und Kakao

stimmen
14

Kann mir jemand in der richtigen Art und Weise führen, um eine farbige Blase / Kreis programmatisch zu bauen?

Ich kann keine Bilder verwenden, wie ich es brauche jede Farbe in der Lage sein werden, je nach Benutzer-Interaktion.

Mein Gedanke war, vielleicht ein weißen Kreis Bild zu machen und dann eine Farbe auf ihn überlagert. Ich bin aber nicht sicher, ob das funktionieren würde, oder wie wirklich, darüber zu gehen.

Wenn mir jemand die richtige Richtung zeigen könnte, würde ich es zu schätzen wissen.

Veröffentlicht am 10/12/2008 um 00:28
quelle vom benutzer
In anderen Sprachen...                            


5 antworten

stimmen
31

Es gibt ein paar Schritte etwas in Cocoa zu zeichnen.

Zuerst müssen Sie einen Weg, der verwendet wird , um das Objekt zu definieren , die Sie zeichnen werden werden. Werfen Sie einen Blick hier Zeichnung Grundformen für eine Führung auf den Wegen in Cocoa zu schaffen. Sie werden am meisten interessiert die „appendBezierPathWithOvalInRect“ Nachricht an einen „NSBezierPath“ Objekt sendet, nimmt diese ein Rechteck , das den Kreis zu zeichnenden Grenzen.

Dieser Code wird eine 10x10 Kreis erstellen an den Koordinaten 10,10:

NSRect rect = NSMakeRect(10, 10, 10, 10);
NSBezierPath* circlePath = [NSBezierPath bezierPath];
[circlePath appendBezierPathWithOvalInRect: rect];

Sobald Sie Ihren Weg haben Sie die Farbe für die aktuelle Zeichnung Kontext setzen. Es gibt zwei Farben, Schlaganfall und füllen; Schlaganfall ist der Umriss des Weges und die Füllung ist die Innenfarbe. So legen Sie eine Farbe, die Sie „Set“ zu einem „NSColor“ Objekt.

Dadurch wird der Hub auf schwarz und die Füllung auf rot:

[[NSColor blackColor] setStroke];
[[NSColor redColor] setFill];

Nun, da Sie Ihren Weg und Sie haben Ihre Farben Set nur den Pfad füllen und dann ziehen sie:

[path stroke];
[path fill];

All dies müssen vielleicht in einem Grafikkontext wie in drawRect einer Ansicht durchgeführt werden. Alle mit einem Grafikkontext dieser zusammen würde wie folgt aussehen:

- (void)drawRect:(NSRect)rect
{
    // Get the graphics context that we are currently executing under
    NSGraphicsContext* gc = [NSGraphicsContext currentContext];

    // Save the current graphics context settings
    [gc saveGraphicsState];

    // Set the color in the current graphics context for future draw operations
    [[NSColor blackColor] setStroke];
    [[NSColor redColor] setFill];

    // Create our circle path
    NSRect rect = NSMakeRect(10, 10, 10, 10);
    NSBezierPath* circlePath = [NSBezierPath bezierPath];
    [circlePath appendBezierPathWithOvalInRect: rect];

    // Outline and fill the path
    [circlePath stroke];
    [circlePath fill];

    // Restore the context to what it was before we messed with it
    [gc restoreGraphicsState];
}
Beantwortet am 10/12/2008 um 01:02
quelle vom benutzer

stimmen
12

Sie können einfach verwenden UIViewzu schaffen perfekt mit nur Parameter Kreis radius:

// Add framework CoreGraphics.framework
#import <QuartzCore/QuartzCore.h>

-(UIView *)circleWithColor:(UIColor *)color radius:(int)radius {
    UIView *circle = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 2 * radius, 2 * radius)];
    circle.backgroundColor = color;
    circle.layer.cornerRadius = radius;
    circle.layer.masksToBounds = YES;
    return circle;
}
Beantwortet am 09/12/2012 um 09:42
quelle vom benutzer

stimmen
11

Erstellen Sie eine NSView Unterklasse , die eine NSColor als Ivar hält. Im drawRect Verfahren wird ein NSBezierPath der entsprechenden Größe erstellen, werden die Grenzen der Ansicht verwendet wird . Dann die Farbe gesetzt [myColor set]und den Pfad füllen [myPath fill]. Es gibt viel mehr können Sie tun, wie Set Transparenz, eine Grenze, und so weiter und so weiter, aber ich werde das auf die Dokumente verlassen , wenn Sie eine bestimmte Frage haben.

Um die NSView Unterklasse zu verwenden, ziehen Sie einfach einen Blick Objekt auf Ihrer Feder, und wählen Sie den Namen Ihrer Unterklasse in benutzerdefinierten Klasse in IB des Inspektors. Sie müssen auch eine Steckdose, um es in Ihrem Controller gesetzt, so dass Sie die Farbe je nach Bedarf ändern können.

Beantwortet am 10/12/2008 um 00:40
quelle vom benutzer

stimmen
7
    CGContextRef c = UIGraphicsGetCurrentContext();
    CGContextSetRGBFillColor(c, 40, 0, 255, 0.1);
    CGContextSetRGBStrokeColor(c, 0, 40, 255, 0.5);

   // Draw a green solid circle
    CGContextSetRGBFillColor(c, 0, 255, 0, 1);
    CGContextFillEllipseInRect(c, CGRectMake(100, 100, 25, 25));
Beantwortet am 11/10/2011 um 12:09
quelle vom benutzer

stimmen
2

Herunterladen der Zeichnung von Apfel. http://developer.apple.com/library/mac/#samplecode/Sketch

Es kann viel mehr tun, aber eines der Dinge ist Kreise zeichnen.

Beantwortet am 10/12/2008 um 00:46
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more