[Résolu]NSColor -> RGB

CrazyJoCrazyJo Membre
avril 2011 modifié dans API AppKit #1
Bonjour,

Je recherche désespérément à  extraire les composantes RGB d'un NSColor. J'ai tenté de nombreuses choses dont ça :
<br />CGFloat r,g,b,a;		<br />NSColor *colorRGB = [comparedColor colorUsingColorSpaceName:NSCalibratedRGBColorSpace];<br />[colorRGB getRed: &amp;r green: &amp;g blue: &amp;b alpha:0];<br />[tmpCell setColor:[NSColor colorWithDeviceRed:r green:g blue:b alpha:0]];<br />


Mais rien ne fonctionne :( Chaque fois les variables r,g,b sont égales à  0 ...

Merci pour le coup de  :D

Bonne fête de Pâques ! :)

Réponses

  • laudemalaudema Membre
    12:42 modifié #2
    Il ne devrait pas y avoir de soucis avec ta méthode: recopiée telle quelle chez moi et en synthétisant une propriété comparedColor liée à  la valeur d'un NSColorWell dont je me suis mis observateur ...
    <br />- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{<br />&nbsp; &nbsp; if ([keyPath isEqualToString:@&quot;comparedColor&quot;]) {<br />&nbsp; &nbsp; &nbsp; &nbsp; CGFloat r,g,b,a;		<br />&nbsp; &nbsp; &nbsp; &nbsp; NSColor *colorRGB = [comparedColor colorUsingColorSpaceName:NSCalibratedRGBColorSpace];<br />&nbsp; &nbsp; &nbsp; &nbsp; [colorRGB getRed: &amp;r green: &amp;g blue: &amp;b alpha:0];<br />&nbsp; &nbsp; &nbsp; &nbsp; //colorFormatter est un NSFormatter qui cherche la couleur dans une colorList..<br />&nbsp; &nbsp; &nbsp; &nbsp; printf(&quot;%s | r: %f g: %f b: %f alpha: %f&#092;n&quot;,[[colorFormatter stringForObjectValue:comparedColor]UTF8String], r, g, b, a);<br />&nbsp; &nbsp; &nbsp; &nbsp; return;<br />&nbsp; &nbsp; }<br />&nbsp; &nbsp; [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];<br />}<br /><br />/*<br />Black | r: 0.000000 g: 0.000000 b: 0.000000 alpha: 0.000000<br />Blue | r: 0.000000 g: 0.000000 b: 1.000000 alpha: 0.000000<br />Brown | r: 0.600000 g: 0.400000 b: 0.200000 alpha: 0.000000<br />Cyan | r: 0.000000 g: 1.000000 b: 1.000000 alpha: 0.000000<br />Green | r: 0.000000 g: 1.000000 b: 0.000000 alpha: 0.000000<br />Magenta | r: 1.000000 g: 0.000000 b: 1.000000 alpha: 0.000000<br />Orange | r: 1.000000 g: 0.500000 b: 0.000000 alpha: 0.000000<br />Purple | r: 0.500000 g: 0.000000 b: 0.500000 alpha: 0.000000<br />Red | r: 1.000000 g: 0.000000 b: 0.000000 alpha: 0.000000<br />Yellow | r: 1.000000 g: 1.000000 b: 0.000000 alpha: 0.000000<br />White | r: 1.000000 g: 1.000000 b: 1.000000 alpha: 0.000000<br />*/<br />
    

    Donc si j'étais toi je regarderais plutôt à  quoi est associé comparedColor .

    (Fait avec Xcode 4 que je commence enfin à  apprécier ;)
  • HerveHerve Membre
    12:42 modifié #3
    Chez moi,
    [uneCouleur redComponent]
    

    marche très bien et retourne un float compris entre 0 et 1.
    C'est une méthode de NSColor.
    http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSColor_Class/Reference/Reference.html
  • CrazyJoCrazyJo Membre
    12:42 modifié #4
    Vous allez rire ...

    Je n'avais jamais assigné une valeur pour ma variable  comparedColor  ...

    Quel idiot ! >:)

    J'ai aussi retesté avec redComponent  et ça fonctionne aussi en effet :)

    Merci
  • HerveHerve Membre
    12:42 modifié #5
    Poiur une fois que j'ai pu être utile, j'suis content. merci aussi! :) :)
Connectez-vous ou Inscrivez-vous pour répondre.