Jak utworzyć NSColor z wartości RGB?Tworzenie NSColor z wartością RGB
Odpowiedz
Per dokumentacji NSColor:
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];
Również nie zapomnij zrobić następującą konwersję od rzeczywistych wartości RGB masz, powiedzmy, że z programu Photoshop ...
RGB z (226, 226, 226) można utworzyć jako NSColor, stosując wartości:
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];
Dlaczego 255? 8-bitowe kanały kolorów w zakresie od 0 do 255 (włącznie). Po znormalizowaniu jest on skalowany do zakresu [0,1] (włącznie). Zobacz referencje konwersji od znormalizowanych wartości do wartości niezormowanych i na odwrót.
Odniesienia
- OpenGL ES Full Specification podano w tabeli 2.7 na stronie 38
- Unreal Engine Color Conversion
To może być oczywiste dla wszystkich innych, ale dlaczego +1? Czy to dlatego, że 256 jest ładniejszą liczbą do podziału, więcej czynników, a więc mniej zaokrągleń/punktów dziesiętnych? –
Ta odpowiedź jest nieco błędna. Wartości 8-bitowego koloru RGB w zakresie od 0 do 255, czyli łącznie 256 wartości. Zatem prawidłowym sposobem odwzorowania na wartości RGB w zakresie od 0 do 1 jest podzielenie przez 255, tj .: 'czerwony = 226/255'. Dodanie niezgrabnie wyglądającego 1 i podzielenie przez 256 daje bardzo podobne, ale nieco niepoprawne wyniki, które możesz zweryfikować, biorąc pod uwagę, co by się stało, gdyby składnik koloru był równy 0: zero podzielone przez 255 to wciąż zero, ale '(0 + 1)/256'> 0. – davidf2281
Extension 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!)
}
}
Następnie zadzwoń
RGB(r: 16, g: 105, b: 125)
lub
RGB(r: 16, g: 105, b: 125, alpha: 0.5)
Po co tworzyć rozszerzenie NSObject, a nie NSColor? – ColdGrub1384
Wolę pisać tylko RGB (... – emreoktem
, ale jeśli utworzysz rozszerzenie NSObject, musisz wywołać funkcję podobną do tej: NSObject().RGB (_ :, g :, b :) lub dowolna podklasa NSObject – ColdGrub1384
- 1. Dlaczego "rgb (224, 226, 213)" jest niepoprawną wartością właściwości?
- 2. Tworzenie JSON dynamicznie z każdą wartością wejściową przy użyciu jquery
- 3. Tworzenie węzła XML z wartością pustą w php
- 4. Uzyskaj RGB z BufferedImage
- 5. Jak znormalizować wartość RGB z referencyjnymi wartościami RGB
- 6. Konwersja z int RGB, HEX
- 7. C++ Uzyskiwanie RGB z hBitmap
- 8. NSDictionary z wartością pustą
- 9. Wartość RGB dla konwertera HSL
- 10. vector.assign() z wartością w sekwencji
- 11. knockout.js z optionsValue i wartością
- 12. Kolorowanie wierzchołka Junga z wartością
- 13. C#: Porównanie z wartością null
- 14. Łączenie tabel z wartością zagregowaną
- 15. django LOGIN_REDIRECT_URL z wartością dynamiczną
- 16. ActiveAdmin - Filtr z wartością domyślną
- 17. Przekształć RGBA z ukrytym kolorem w RGB?
- 18. Uzyskiwanie tablicy RGB z obrazu w C#
- 19. Jak uzyskać pędzel z kodu RGB?
- 20. Dlaczego dokonujemy konwersji z RGB na HSV
- 21. Szybka wektorowy konwersji z RGB do BGRA
- 22. Jak prawidłowo inicjować UIColor z wartości RGB?
- 23. Jak utworzyć obraz CG z danymi RGB?
- 24. Arduino RGB LED problemy
- 25. Różnica między wartością a wartością przedmiotu
- 26. Znalezienie najbliższy kolor RGB
- 27. Błąd z wartością google_play_services_version z biblioteki aar
- 28. Przechwyć RGB z Kinnect z Openni i pokaż z OpenCV
- 29. Tworzenie instancji nieznanego Enum z wartością ciągu za pomocą odbicia w C#
- 30. Tworzenie nowej DataFrame Spark z nową wartością kolumny opartą na kolumnie w pierwszej ramce danych Java
Należy użyć 1.0f zamiast 1,0, a 1,0 jest podwójne, który nie jest rodzimy typ dla iPhone. – nash
Masz rację - niebezpieczeństwa szybkiego wpisywania kodu! –
Warto chyba wyraźnie zaznaczyć, że wartości kolorów wynoszą od 0,0 do 1,0. Ponadto wersja "skalibrowana" jest prawdopodobnie bardziej odpowiednim wariantem tej metody. Chcesz użyć NSCalibratedRGBColorSpace (co odpowiada [NSColorSpace genericRGBColorSpace]) we wszystkich wewnętrznych relacjach z kolorami. I używaj tylko wariantów przestrzeni kolorów "urządzenia" podczas wysyłania do znanego urządzenia. – Kelan