2009-05-03 8 views
0

Je tente d'étiqueter un fichier image avec une date dans Cocoa et j'essaie de le faire dans un petit outil de ligne de commande. Cela fonctionne bien ... mais, je ne peux pas sembler être en mesure de définir la couleur. Est-ce que je fais quelque chose de mal?Définition de la couleur lors du dessin dans un NSImage

#import <Cocoa/Cocoa.h> 

int main (int argc, const char * argv[]) { 
    [NSApplication sharedApplication]; 
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
    NSImage *image = [[NSImage alloc] initWithContentsOfFile: 
       [NSString stringWithFormat:@"%s", "/some/file.png"]]; 

    if (image) { 
     [image lockFocus]; 
     NSColor *color = [NSColor whiteColor]; 
     // THESE DOESN'T SEEM TO WORK... 
     [color set]; 
     [color setStroke]; 
     [color setFill]; 
     NSString *string = [NSString stringWithFormat:@"%@", [NSDate date]]; 
     [string drawAtPoint:NSMakePoint(10, 10) withAttributes:nil]; 
     [image unlockFocus]; 

     NSBitmapImageRep *bits = [NSBitmapImageRep imageRepWithData: 
            [image TIFFRepresentation]]; 

     NSData *data = [bits representationUsingType:NSPNGFileType 
              properties:nil]; 

     [data writeToFile:@"/some/file.png" 
       atomically:NO]; 
    } 
    [pool drain]; 
    return 0; 
} 
+0

La couleur du texte est-elle noire plutôt que blanche? Sinon, le problème réside probablement ailleurs. –

+0

tout est noir. J'ai également essayé d'ajouter un [NSBezierPath fillRect: rect]; qui est aussi tout noir ... – epatel

Répondre

2

Je crois que vous devez définir la couleur du texte en utilisant l'attribut NSForegroundColorAttributeName dans le drawAtPoint: withAttributes: appel, plutôt que setStroke/setFill.

+0

J'essaierai. Mais set/setFill n'a pas changé la couleur d'un [NSBezierPath fillRect: rect]; tout était noir ... – epatel

+0

A travaillé super! Merci! :) – epatel

Questions connexes