Вот функция, которую я использовал для создания цветной версии изображения:
@interface NSImage( ColorizedImageAdditions )
- (NSImage*) colorizedImage: (NSColor*) color;
@end
- (NSImage*) colorizedImage: (NSColor*) color
{
NSSize imageSize = [ self size ];
NSImage* result = [ [ [ NSImage alloc ] initWithSize: imageSize ] autorelease ];
[ result lockFocus ];
[ NSGraphicsContext saveGraphicsState ];
NSRect imageBounds = NSMakeRect( 0, 0, imageSize.width, imageSize.height );
[ color setFill ];
[ NSBezierPath fillRect: imageBounds ];
[ self drawInRect: imageBounds fromRect: NSZeroRect
operation: NSCompositeDestinationIn fraction: 1.0 ];
[ NSGraphicsContext restoreGraphicsState ];
[ result unlockFocus ];
return result;
}
Используется операция NSCompositeDestinationIn для заполнения непрозрачных областей изображения требуемым цветом.