Sześciokątna przezroczystość w kolorach [duplikat]

To pytanie ma już odpowiedź tutaj:

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?

Author: MichaelStoddart, 2013-04-06

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)

 3105
Author: Ben Clayton,
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

  1. dziesiętny = procent * 255 / 100 . ex: dziesiętny = 50*255/100 = 127.5
  2. 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

  1. Przelicz wartość hexaxdecimal na dziesiętną. ex: D6 = 13 * 16ˆ1 + 6 = 214
  2. 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
 99
Author: Raymond Chenon,
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.

 27
Author: erkangur,
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.

 21
Author: Tanis.7x,
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;
}
 16
Author: dwbrito,
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

Tutaj wpisz opis obrazka

To może być bardzo późna odpowiedź.. Ale ta karta go zabija.

Wszystkie wartości procentowe są mapowane do wartości szesnastkowych.

Http://online.sfsu.edu/chrism/hexval.html

 16
Author: amalBit,
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.

 6
Author: chjarder,
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;
}
 3
Author: fontophilic,
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))

:)

 1
Author: Geng Jiawen,
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

 -1
Author: Amad Yus,
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