< Previous PageNext Page > Hide TOC

Drawing

This chapter discusses drawing issues when using Core Animation and other technologies.

Drawing Layer Content With Application Kit Classes

Core Animation CALayer class defines a delegate method, drawLayer:inContext:, that you can implement and draw your layer content using Quartz 2D drawing functions. However, Cocoa developers who have complete and working drawing solutions based on the Application Kit drawing classes may wish to continue using that code.

Listing 1 shows an implementation of the CALayer delegate method drawLayer:inContext: that creates an NSGraphicsContext from the CGContextRef passed as the inContext: parameter. Layer delegates can use this technique to display content created using NSBezierPath, NSColor, NSImage and other Application Kit classes.

Listing 1  Drawing into a layer using Application Kit classes

 
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
   NSGraphicsContext *nsGraphicsContext;
   nsGraphicsContext = [NSGraphicsContext graphicsContextWithGraphicsPort:ctx
                                                                  flipped:NO];
   [NSGraphicsContext saveGraphicsState];
   [NSGraphicsContext setCurrentContext:nsGraphicsContext];
 
   // ...Draw content using NS APIs...
   NSRect aRect=NSMakeRect(10.0,10.0,30.0,30.0);
   NSBezierPath *thePath=[NSBezierPath bezierPathWithRect:aRect];
   [[NSColor redColor] set];
   [thePath fill];
 
   [NSGraphicsContext restoreGraphicsState];
}


< Previous PageNext Page > Hide TOC


© 2008 Apple Inc. All Rights Reserved. (Last updated: 2008-03-11)


Did this document help you?
Yes: Tell us what works for you.
It’s good, but: Report typos, inaccuracies, and so forth.
It wasn’t helpful: Tell us what would have helped.