6
votes

Conversion de RVB en HSL avec objectif C

Je suis assez nouveau à l'objectif c mais je suis programmée depuis un moment. J'ai commencé à créer une fonction qui convertirait de RVB en HSL et à nouveau, mais je me sens un sentiment que c'est beaucoup trop long et je me dirigeai dans la mauvaise direction. Est-ce que quelqu'un connaît un moyen simple d'effectuer cette conversion?


0 commentaires

4 Réponses :


4
votes

Vous pouvez utiliser nscolor code>, je pense.

CGFloat r, g, b, a, h, s, b, a2;
NSColor *c = [NSColor colorWithCalibratedRed:r green:g blue:b alpha:a];
[c getHue:&h saturation:&s brightness:&b alpha:&a2];


7 commentaires

+1, bien que HSL ne soit pas tout à fait identique à la HSB / HSV. Le H et S devrait être le même, cependant.


@Wevah, Wikipedia dit que ce n'est pas très normalisé et que l'un des noms peut aller avec n'importe quel modèle. Je ne suis pas assez d'un expert pour connaître les subtilités.


Eh bien, ils sont trier de standard. Presque. La plupart du temps, il est tout simplement regrettable que les trucs intégrés ne gèrent pas HSL (ergitness). : / S'il veut vraiment que HSV / HSB, votre réponse est parfaite!


Il y a bien un uicolor! (J'ai raté la balise iPhone .)


Merci Carl, j'ai essayé d'utiliser Uicolor qui m'a un peu plus proche, mais j'obtiens l'erreur que Uicolor ne répond pas à -Géthue: saturation: luminosité: alpha '


La teinte est la seule valeur similaire dans HSB et HSL. Les S (saturation) ne sont pas calculés de la même manière.


-Gethue: Saturation: luminosité: alpha est de Disponible à partir de iOS5



0
votes

Vous pouvez ajouter la catégorie uicolor-hsvaddition.h / .m à votre application pour ajouter un ensemble d'opérations à Uicolor pour travailler avec la teinte, la saturation et la valeur. Voir http://bravobug.com/news/?p=448 et cette Arstechnica article également.


0 commentaires

6
votes

NSCOLOR est manquant dans iPhone SDK. Vous pouvez utiliser cet utilitaire pour convertir de RVB en espace HSL et à l'arrière:

https://github.com/alessani/colorconverter


0 commentaires

3
votes

Voici ce que j'utilise: xxx

et voici comment l'appeler: xxx


2 commentaires

Merci! Fonctionne beaucoup plus rapidement que d'utiliser nscolor .


Mise à jour: Cette fonction renvoie réellement des valeurs de teinte différentes que je ne le pense. Lorsque je l'utilise pour sélectionner différentes gammes de teinte à partir d'une roue de couleur, elle saute autour. En revanche, la solution suivante tourne autour de la roue de couleur comme prévu: Stackoverflow.com/a/6930407/1976584