2010-11-04 7 views

Répondre

3

Vous pouvez extraire les informations alpha en créant un CGBitmapContext avec kCGImageAlphaOnly, et 1 composant et dessiner dans celui-ci. Ensuite, vous auriez une image avec alpha seulement.

Ensuite, vous pouvez le combiner sur une image entièrement noire avec kCGBlendModeDestinationIn. Cela devrait vous laisser avec une image qui est tout noir avec les valeurs alpha d'origine.

2

Voici une fonction que je l'ai utilisé pour faire une version colorisée d'une image:

@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; 
} 

Il utilise l'opération NSCompositeDestinationIn pour remplir les zones opaques de l'image avec la couleur désirée.

Questions connexes