Jak mogę uzyskać kolor z szesnastkowego kodu kolorów (np. #FFDFD991
)?
Czytam plik i otrzymuję szesnastkowy kod koloru. Muszę utworzyć odpowiednią System.Windows.Media.Color
instancję dla kodu koloru szesnastkowego. Czy istnieje wbudowana metoda pozwalająca to zrobić?
#FF0000
to kod koloru HTML (lub szesnastkowy), a nie kod skrótu. Naucz się różnicy.Odpowiedzi:
Zakładam, że to kod ARGB ... Masz na myśli
System.Drawing.Color
czySystem.Windows.Media.Color
? Ten ostatni jest używany na przykład w WPF. Jeszcze nie widziałem, żeby ktoś o tym wspominał, więc na wypadek, gdybyś go szukał:źródło
Color.FromArgb
tym przypadku prawdopodobnie łatwiej jest jednak użyć tej metody. Jeśli użyjesz zmiennoprzecinkowej alfa, będziesz musiał pomnożyć przez 255.Zakładając, że masz na myśli kody RGB typu HTML (nazywane kodami Hex, takimi jak # FFCC66), użyj klasy ColorTranslator :
Jeśli jednak używasz kodu szesnastkowego ARGB, możesz użyć klasy ColorConverter z przestrzeni nazw System.Windows.Media:
źródło
Jeśli nie chcesz korzystać z ColorTranslator, możesz to zrobić w łatwy sposób:
Kod koloru to tylko szesnastkowa reprezentacja wartości ARGB.
EDYTOWAĆ
Jeśli chcesz użyć 4 wartości zamiast jednej liczby całkowitej, możesz użyć tego (łącząc kilka komentarzy):
Uwaga 1 : NumberStyles znajduje się w System.Globalization.
Uwaga 2 : podaj własne sprawdzanie błędów (kod koloru powinien być wartością szesnastkową o długości 6 lub 8 znaków)
źródło
colorcode = colorcode.Replace("#", "")
prostu użyjint a = byte.parse(colorcode.Substring(0,2), NumberStyles.HexNumber);
i tak dalej dla r, g i b. Nie zapomnij zastąpić pierwszego parametru podłańcucha - indeksu - 2 dla r, 4 dla g i 6 dla b.FromArgb
przyjmuje 1 parametrSystem.Drawing.Color
i 4 parametrySystem.Windows.Media.Color
Istnieje również ta zgrabna mała metoda rozszerzenia:
W użyciu:
źródło
Color
poprawnie szesnastkowego . Użyłem kodu z @too i to naprawiło.& 0xFF
za każdym razem końcową wartość obniżoną, zamiast potrzebować tych wszystkich różnych wartości&
.Trzy poniższe warianty dają dokładnie ten sam kolor. Ostatni ma tę zaletę, że jest podświetlony w programie Visual Studio 2010 IDE (może to robi ReSharper) w odpowiednim kolorze.
źródło
System.Windows.Media.Color
.źródło
Musiałem przekonwertować kod koloru HEX na System.Drawing.Color, a konkretnie odcień Alice Blue jako tło w formularzu WPF i stwierdziłem, że znalezienie odpowiedzi zajęło więcej czasu niż oczekiwano:
-
źródło
Możesz użyć następującego kodu:
źródło
Jeśli chcesz to zrobić za pomocą aplikacji Windows Store, odpowiedz @Hans Kesting i @Jink odpowiedz:
źródło
Ten post stał się goto dla każdego, kto próbuje przekonwertować kod koloru szesnastkowego na kolor systemowy. Dlatego pomyślałem, że dodam kompleksowe rozwiązanie, które obsługuje zarówno wartości szesnastkowe (RGB), jak i 8-cyfrowe (ARGB).
Domyślnie, według Microsoft, przy konwersji z wartości RGB na ARGB
Oznacza to, że po dodaniu FF do 6-cyfrowego kodu szesnastkowego (RGB) staje się 8-cyfrowym kodem szesnastkowym ARGB. Dlatego można stworzyć prostą metodę, która obsługuje zarówno szesnastki ARGB, jak i RGB i konwertuje je na odpowiednią strukturę kolorów.
Inspiracją była odpowiedź Hansa Kestinga.
źródło
Możesz zobaczyć elipsę Silverlight / WPF z kolorem szesnastkowym do używania wartości szesnastkowej:
źródło
WPF:
źródło
Color [Indigo]
Posługiwać się
źródło
int
?Jeśli masz na myśli HashCode jak w
.GetHashCode()
, obawiam się, że nie możesz wrócić. Funkcje skrótu nie są dwukierunkowe, można przejść tylko do przodu, a nie wstecz.Postępuj zgodnie z sugestią Odeda, jeśli chcesz uzyskać kolor na podstawie szesnastkowej wartości koloru.
źródło
Użyłem ColorDialog w moim projekcie. ColorDialog czasami zwraca „Red”, „Fhushia”, a czasami zwraca „fff000”. Rozwiązałem ten problem w ten sposób, może komuś pomóc.
InputColor to zwracana wartość z ColorDialog.
Dziękuję wszystkim za odpowiedź na to pytanie. To dla mnie wielka pomoc.
źródło