NSColor problème de conversion
Rocou
Membre
Bonjour,
Je réalise des conversions NSString hexadécimal en NSColor et inversement.
Les méthodes de conversion ont été écrites avec l'aide des intervenants du forum et je les en remercie.
Néanmoins, dans certains cas, j'obtiens l'erreur suivante:
*** -blueComponent not defined for the NSColor NSCustomColorSpace RVB générique colorspace 1 0 0 1; need to first convert colorspace.
Voici les méthodes:
Pour convertir une chaà®ne hexa (du style "&cFF0000") en NSColor:
Pour convertir une NSColor en chaà®ne hexa:
J'ai un NSColorWell. Je l'initialise avec un [monNSColorWell setColor:maCouleur] puis je récupère la couleur avec [monNSColorWell Color];
L'erreur apparaà®t dans le cas suivant:
1- Je récupère une NSString contenant la valeur de la couleur en hexa
2- je transforme cette chaine grâce à la méthode setColorBenne
3- j'initialise monNSColorWell avec la NSColor issue de 2 (ça fonctionne très bien)
4- je récupère la couleur avec [monNSColorWell Color] ça plante ici!
Par contre, si à la place des point 1,2 et 3 j'utilise le NSColorWell pour choisir une couleur, il n'y pas d'erreur.
Je réalise des conversions NSString hexadécimal en NSColor et inversement.
Les méthodes de conversion ont été écrites avec l'aide des intervenants du forum et je les en remercie.
Néanmoins, dans certains cas, j'obtiens l'erreur suivante:
*** -blueComponent not defined for the NSColor NSCustomColorSpace RVB générique colorspace 1 0 0 1; need to first convert colorspace.
Voici les méthodes:
Pour convertir une chaà®ne hexa (du style "&cFF0000") en NSColor:
-(NSColor*)setColorBenne:(NSString*)hexcol<br />{<br /> <br /> CGFloat c1,c2,c3;<br /> c1=strtol([[hexcol substringWithRange:NSMakeRange(2, 2)] UTF8String],NULL,16);<br /> c2=strtol([[hexcol substringWithRange:NSMakeRange(4, 2)] UTF8String],NULL,16);<br /> c3=strtol([[hexcol substringWithRange:NSMakeRange(6, 2)] UTF8String],NULL,16);<br /> <br /> <br /> return [NSColor colorWithDeviceRed:c1/255.0 green:c2/255.0 blue:c3/255.0 alpha:1.0];<br /> <br />}<br />
Pour convertir une NSColor en chaà®ne hexa:
-(NSString*)hexValueForColor:(NSColor*)aColor<br />{<br /> NSColor* rgbCol = [aColor colorUsingColorSpace:[NSColorSpace genericRGBColorSpace]];<br /> return [NSString stringWithFormat: @"%02X%02X%02X",<br /> (unsigned char)([rgbCol redComponent]*255),<br /> (unsigned char)([rgbCol greenComponent]*255),<br /> (unsigned char)([rgbCol blueComponent]*255)<br /> ];<br />}<br />
J'ai un NSColorWell. Je l'initialise avec un [monNSColorWell setColor:maCouleur] puis je récupère la couleur avec [monNSColorWell Color];
L'erreur apparaà®t dans le cas suivant:
1- Je récupère une NSString contenant la valeur de la couleur en hexa
2- je transforme cette chaine grâce à la méthode setColorBenne
3- j'initialise monNSColorWell avec la NSColor issue de 2 (ça fonctionne très bien)
4- je récupère la couleur avec [monNSColorWell Color] ça plante ici!
Par contre, si à la place des point 1,2 et 3 j'utilise le NSColorWell pour choisir une couleur, il n'y pas d'erreur.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
J'utilise une catégorie sur NSColor:
J'ai constaté depuis longtemps, que certaines couleurs ne sont pas décomposables directement, d'où le:
NSColor* color=[self shadowWithLevel:0.0]; // pour s'assurer que la couleur possède bien des components
Mais, j'ai jamais vraiment compris pourquoi ...
Ton problème est peut-être le même ... ou pas ???
Oi, c'était ça, merci beaucoup. Je n'aurais jamais pu trouver ça tout seul.
Si je me souviens bien, whiteColor, blackColor ou grayColor retournent une couleur dans le
[NSColorSpace genericGrayColorSpace] et greenColor, ... dans le [NSColorSpace genericRGBColorSpace]
Pas dans le code de mpergand. Si ce que mpergand cherche a faire, c'est récupérer une couleur RGB, utiliser les méthodes que je donne est peut-être plus adapté.
Mais Rocou l'utilise et il a quand même des problèmes apparemment ???
Sinon on en parle ici:
http://forum.macbidouille.com/index.php?showtopic=188646