This chapter discusses drawing issues when using Core Animation and other technologies.
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]; |
} |
© 2008 Apple Inc. All Rights Reserved. (Last updated: 2008-03-11)