Comment créer un NSColor à partir d'une valeur RVB?Création d'un NSColor avec valeur RVB
Répondre
par la NSColor documentation:
NSColor *myColor = [NSColor colorWithCalibratedRed:redValue green:greenValue blue:blueValue alpha:1.0f];
float red = 0.5f;
float green = 0.2f;
float blue = 0.4f;
float alpha = 0.8f;
NSColor *rgb = [NSColor colorWithDeviceRed:red green:green blue:blue alpha:alpha];
Aussi ne pas oublier de faire la conversion suivante à partir des valeurs RVB réelles que vous obtenez, permet de dire à partir de Photoshop ...
RGB de (226, 226, 226) peut être instancié en tant que NSColor en utilisant les valeurs:
Red: 226/255 = 0.886...
Green: 226/255 = 0.886...
Blue: 226/255 = 0.886...
[NSColor colorWithDeviceRed:0.886f green:0.886f blue:0.886f alpha:1.0f];
Pourquoi 255? Les canaux de couleur 8 bits vont de 0 à 255 (inclus). Une fois normalisée, elle est mise à l'échelle de la plage [0,1] (inclus). Voir les références pour les conversions de valeurs normalisées en valeurs non normalisées et vice versa.
Références
- OpenGL ES Full Specification, voir le tableau 2.7 sur la page 38
- Unreal Engine Color Conversion
Cela pourrait être évident pour tout le monde, mais pourquoi le +1? Est-ce juste parce que 256 est un nombre plus agréable à diviser avec, plus de facteurs, donc moins d'erreurs d'arrondi/points décimaux? –
Cette réponse est légèrement fausse. Les valeurs de couleur RVB 8 bits vont de 0 à 255, soit 256 valeurs au total. Ainsi, la façon correcte de mapper des valeurs RVB allant de 0 à 1 est de diviser par 255, c'est-à-dire: «rouge = 226/255». L'ajout du 1 bizarre et du divisant par 256 donne des résultats très similaires mais légèrement incorrects, que vous pouvez vérifier en considérant ce qui se passerait si une composante couleur était 0: zéro divisé par 255 est toujours zéro, mais '(0 + 1)/256'> 0. – davidf2281
Extension pour Swift 2
extension NSObject {
func RGB(r:CGFloat, g:CGFloat, b:CGFloat, alpha:CGFloat? = 1) -> NSColor {
return NSColor(red: r/255, green: g/255, blue: b/255, alpha: alpha!)
}
}
Ensuite, il suffit d'appeler
RGB(r: 16, g: 105, b: 125)
ou
RGB(r: 16, g: 105, b: 125, alpha: 0.5)
Pourquoi créer une extension de NSObject et non de NSColor? – ColdGrub1384
Je préfère simplement écrire RGB (... – emreoktem
mais si vous créez une extension de NSObject, vous devez appeler la fonction comme ceci: NSObject().RGB (_:, g :, b :) ou toute sous-classe NSObject – ColdGrub1384
- 1. Détection de valeur OpenCV RVB?
- 2. Convertir la valeur RVB en HSV
- 3. NSColor, 10,6 et Gamma 2,2
- 4. Transparence NSColor sur fond noir?
- 5. comment changer la valeur de l'objet NSColor dans son 8 bits valeur
- 6. Problème CMJN 2 RVB
- 7. Création d'un histogramme HSV à l'aide de l'image RVB
- 8. Soustraction des valeurs RVB
- 9. Conversion d'une valeur de couleur RVB en hexadécimal
- 10. Comment écrire une valeur de couleur RVB dans JavaScript?
- 11. Modifier les valeurs RVB
- 12. Couleur Blanc à RVB correct
- 13. Parade RVB dans WPF
- 14. RVB Couleur Transparence
- 15. Interpolation de la couleur RVB
- 16. Valeurs OpenCV RVB en hexadécimal?
- 17. Comment traiter RVB à YUV
- 18. Capteur de couleurs Lejos RVB
- 19. Comment corriger la couleur RVB prise avec l'appareil photo?
- 20. Comment créer une image CG avec des données RVB?
- 21. Création d'une bordure autour des cellules avec la même valeur
- 22. NSColor et NSGradient en tant que propriétés - une raison de copier?
- 23. comment obtenir la valeur RVB d'un pixel dans l'espace de travail Form
- 24. Comment convertir une couleur de chaîne en code hexadécimal ou en valeur RVB?
- 25. Valeur magique COLORREF/RVB pour déterminer quand utiliser le texte clair/foncé
- 26. Comment obtenir la valeur RVB d'un pixel à partir d'un objet CGImageRef?
- 27. Mélanger les couleurs RVB (L * a * b *)
- 28. VTK Question - RVB pour la peau
- 29. Convertir la couleur RVB à OLE_Color
- 30. Affichage de l'image RVB dans GTK + -2.2
Vous devez utiliser 1.0f au lieu de 1,0, 1,0 est un double, ce qui est un type natif pour l'iPhone. – nash
Vous avez raison - les dangers du code de frappe rapidement! –
Cela vaut probablement la peine de préciser que les valeurs de couleur vont de 0.0 à 1.0. En outre, la version "calibrée" est en effet plus que probablement la variante correcte de cette méthode à utiliser. Vous voulez utiliser l'espace NSCalibratedRGBColorSpace (qui correspond à [NSColorSpace genericRGBColorSpace]) dans toutes les relations internes avec les couleurs. N'utilisez que les variantes d'espaces colorimétriques "périphérique" lors de la sortie vers un périphérique spécifique connu. – Kelan