Search code examples
macosnsviewappkitcgpath

Creating a NSView from a CGPath


I have a CGPath and I want to draw it once to a NSView. Seems relatively simple but I haven't found a way in AppKit (non iphone).


Solution

  • Inside -drawRect:, You use CGContextAddPath to add it to a context, and use CGContext(Draw|Fill|Stroke)Path to draw it. I.e. you subclass NSView, and override

    - (void)drawRect:(NSRect)needsDisplayInRect
    {
        CGContextRef cgcontext = [[NSGraphicsContext currentContext] graphicsPort];
        CGContextAddPath(cgcontext,path); // assumes you have CGPathRef*path;
        CGContextStrokePath(cgcontext);
    }
    

    Then -drawRect: will be called whenever appropriate. You can force the view to update by calling [view displayIfNeeded].