Sześciokątna przezroczystość w kolorach [duplikat]
To pytanie ma już odpowiedź tutaj:
- zrozumienie kolorów na Androidzie (sześć znaków) 7 odpowiedzi
Pracuję nad implementacją opcji przezroczystości widżetu dla mojego widżetu aplikacji, chociaż mam pewne problemy z poprawieniem wartości kolorów szesnastkowych. Będąc zupełnie nowym w przezroczystości kolorów hex Szukałem trochę, chociaż nie mogłem znajdź konkretną odpowiedź na moje pytanie.
Chcę ustawić przezroczystość według koloru sześciokątnego, więc powiedzmy, że mój identyfikator koloru sześciokątnego "#33b5e5 " i chcę, aby był przezroczysty w 50%. Wtedy użyję "# 8033b5e5", ponieważ 80 to 50%.
Znalazłem przydatny Wykres tutaj: http://www.dtp-aus.com/hexadeci.htm . Z tymi danymi udało mi się to wymyślić:
0% = #00
10% = #16
20% = #32
30% = #48
40% = #64
50% = #80
60% = #96
70% = #112
80% = #128
90% = #144
Teraz problemy zaczynają się pojawiać, gdy dostanę więcej niż 100 W hex. Kody kolorów sześciokątnych mogą mieć tylko 8 symboli, prawda? Na przykład #11233b5e5 (80%)
Co mogę zrobić, aby umożliwić mi również korzystanie z wyższych liczb?
10 answers
Oto prawidłowa tabela procentów do wartości szesnastkowych. Np. dla 50% białych używasz #80FFFFFF.
- 100% - FF
- 95% - F2
- 90% - E6
- 85% - D9
- 80% - CC
- 75% - BF
- 70% - B3
- 65% - A6
- 60% - 99
- 55% - 8C
- 50% - 80
- 45% - 73
- 40% - 66
- 35% - 59
- 30% - 4D
- 25% - 40
- 20% - 33
- 15% - 26
- 10% - 1a
- 5% - 0D
- 0% - 00
(źródło)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:27
Krótka odpowiedź
Możesz zobaczyć pełną tabelę procentów do wartości hex i Uruchom Kod na tym placu zabaw w https://play.golang.org/p/l1JaPYFzDkI .
Krótkie wyjaśnienie w pseudokodzie
Procent do wartości szesnastkowych
- dziesiętny = procent * 255 / 100 . ex: dziesiętny = 50*255/100 = 127.5
- Konwertuj dziesiętne na wartość szesnastkową . ex: 127.5 w układzie dziesiętnym = 7*16ˆ1 + 15 = 7F w układzie szesnastkowym
Wartości szesnastkowe w procentach
- Przelicz wartość hexaxdecimal na dziesiętną. ex: D6 = 13 * 16ˆ1 + 6 = 214
- procent = (wartość dziesiętna ) * 100 / 255. ex : 214 *100/255 = 84%
Więcej informacji o konwersji dziesiętnej szesnastkowej
Długa odpowiedź: jak obliczyć w głowie
Problem może być rozwiązany w sposób ogólny przez mnożenie krzyżowe .
Mamy procent (od 0 do 100 ) i inną liczbę (z zakresu od 0 do 255), następnie zamienioną na szesnastkową.
- 100 255 (FF w systemie szesnastkowym)
- 0 0 (00 w systemie szesnastkowym)
Dla 1%
- 1 * 255 / 100 = 2,5
- 2,5 w hexa jest 2 jeśli go zaokrąglisz.
Dla 2%
- 2 * 255 / 100 = 5
- 5 w hexa jest 5 .
Tabela w najlepszej odpowiedzi podaje procent krok po kroku 5%.
Jak aby obliczyć liczby między w twojej głowie ? Ze względu na 2.5 przyrost, dodaj 2 do pierwszego i 3 do następnego
- 95% - F2 // start
- 96% - F4 // dodaj 2 do F2
- 97% - F7 / / dodaj 3 . Lub F2 + 5 = F7
- 98% - F9 / / dodaj 2
- 99% - FC / / dodaj 3. 9 + 3 = 12 W hexa : C
- 100% - FF / / dodaj 2
Wolę uczyć jak znaleźć rozwiązanie, niż przekazywać tabelę
Daj człowiekowi rybę i karmisz go przez jeden dzień; naucz człowieka łowić ryby i karmisz go przez całe życie
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-26 20:24:18
Kolorowa notacja szesnastkowa wygląda następująco: #AARRGGBB
- a : alpha
- R : czerwony
- G: zielony
- B: niebieski
Powinieneś najpierw przyjrzeć się, jak działa szesnastkowy. Można pisać co najwyżej FF.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-06 14:35:23
Ten wykres nie pokazuje procentów. "#90 "to nie" 90%". Ten wykres pokazuje konwersję szesnastkową na dziesiętną. Liczba szesnastkowa 90 (zwykle reprezentowana jako 0x90) jest równa liczbie dziesiętnej 144.
Liczby szesnastkowe to baza-16, więc każda cyfra jest wartością od 0 do F. maksymalna wartość dla dwubajtowej wartości szesnastkowej (takiej jak przezroczystość koloru) to 0xFF lub 255 w dziesiętnym. Tak więc 100% to 0xFF.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-11 13:33:51
Zbudowałem tę małą metodę pomocniczą dla aplikacji na Androida, może się przydać:
/**
* @param originalColor color, without alpha
* @param alpha from 0.0 to 1.0
* @return
*/
public static String addAlpha(String originalColor, double alpha) {
long alphaFixed = Math.round(alpha * 255);
String alphaHex = Long.toHexString(alphaFixed);
if (alphaHex.length() == 1) {
alphaHex = "0" + alphaHex;
}
originalColor = originalColor.replace("#", "#" + alphaHex);
return originalColor;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-24 11:03:58
To może być bardzo późna odpowiedź.. Ale ta karta go zabija.
Wszystkie wartości procentowe są mapowane do wartości szesnastkowych.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-22 08:31:45
Wypróbuj to w wyszukiwarce google (lub Kliknij tutaj )
255 * .2 to hex
W rezultacie wygeneruje 0x33
.
Jednak google nie zaokrągla wartości, więc można używać tylko mnożników 1-cyfrowych. jeśli chcesz użyć say .85, musisz uzyskać zaokrągloną wartość 255 * .85 najpierw wpisz (rounded-value here) to hex
w wyszukiwarce google.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-10 12:04:06
Zdaję sobie sprawę, że to stare pytanie, ale natknąłem się na nie, robiąc coś podobnego.
Używając SASS, masz bardzo elegancki sposób na konwersję rgba na hex ARGB: ie-hex-str
. Użyłem go tutaj w mieszance.
@mixin ie8-rgba ($r, $g, $b, $a){
$rgba: rgba($r, $g, $b, $a);
$ie8-rgba: ie-hex-str($rgba);
.lt-ie9 &{
background-color: transparent;
filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#{$ie8-rgba}', endColorstr='#{$ie8-rgba}');
}
}
.transparent{
@include ie8-rgba(88,153,131,.8);
background-color: rgba(88,153,131,.8);
}
Wyjścia:
.transparent {
background-color: rgba(88, 153, 131, 0.8);
}
.lt-ie9 .transparent {
background-color: transparent;
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#CC589983', endColorstr='#CC589983');
zoom: 1;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-09 19:44:51
Użycie Pythona do obliczenia tego, na przykład (napisane w Pythonie 3), 50% przezroczystości:
hex(round(256*0.50))
:)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-12 02:21:45
Zawsze przychodzę tutaj, aby sprawdzić wartość int/hex alpha. Tak więc w końcu stworzyłem prostą metodę w mojej klasie java utils. Ta metoda przekonwertuje procent na wartość szesnastkową i dołącza do wartości ciągu kodu koloru.
public static String setColorAlpha(int percentage, String colorCode){
double decValue = ((double)percentage / 100) * 255;
String rawHexColor = colorCode.replace("#","");
StringBuilder str = new StringBuilder(rawHexColor);
if(Integer.toHexString((int)decValue).length() == 1)
str.insert(0, "#0" + Integer.toHexString((int)decValue));
else
str.insert(0, "#" + Integer.toHexString((int)decValue));
return str.toString();
}
Więc, Utils.setColorAlpha(30, "#000000")
da ci #4c000000
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-13 08:01:40