Pregunta Hex transparencia en colores [duplicado]


Esta pregunta ya tiene una respuesta aquí:

Estoy trabajando en la implementación de una opción de transparencia wigdget para mi widget de aplicación aunque estoy teniendo algunos problemas para obtener los valores de color hexadecimal correctos. Siendo completamente nuevo en la transparencia de color hexadecimal, busqué un poco, aunque no pude encontrar una respuesta específica a mi pregunta.

Quiero establecer la transparencia por color hexadecimal así que digamos mi id. De color hexadecimal "# 33b5e5" y quiero que sea 50% transparente. Luego usaré "# 8033b5e5" porque 80 es 50%.

Encontré una tabla útil aquí: http://www.dtp-aus.com/hexadeci.htm . Con esta información logré llegar a esto:

0% = #00
10% = #16
20% = #32
30% = #48
40% = #64
50% = #80
60% = #96
70% = #112
80% = #128
90% = #144

Ahora los problemas comienzan a aparecer cuando tengo más de 100 en hex. Los códigos de color hexadecimales solo pueden tener 8 símbolos de largo ¿no? Por ejemplo, # 11233b5e5 (80%) bloqueos.

¿Qué puedo hacer para permitirme usar los números más altos también?


942
2018-04-06 14:30


origen


Respuestas:


Aquí hay una tabla correcta de porcentajes para los valores hexadecimales. P.ej. para el 50% de blanco, usaría # 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

(fuente)


3015
2018-06-21 16:15



Respuesta corta

Puede ver la tabla completa de porcentajes a valores hexadecimales y correr el código en este patio de recreo en https://play.golang.org/p/l1JaPYFzDkI .

Breve explicación en pseudocódigo

Porcentaje de valores hexadecimales

  1. decimal = porcentaje * 255/100. ej .: decimal = 50 * 255/100 = 127.5
  2. convertir decimal a valor hexadecimal. ej .: 127.5 en decimal = 7 * 161 + 15 = 7F en hexadecimal

Hex valores a porcentaje

  1. convierte el valor hexadecimal a decimal. ex: D6 = 13 * 161 + 6 = 214
  2. porcentaje = (valor en decimal) * 100 / 255. ej .: 214 * 100/255 = 84%

Más información para la conversión decimal <=> hexadecimal 

Respuesta larga: cómo calcular en tu cabeza

El problema puede ser resuelto genéricamente por un multiplicación cruzada.

Tenemos un porcentaje (que va de 0 a 100) y otro número (que va de 0 a 255) y luego se convierte a hexadecimal.

  • 100 <==> 255 (FF en hexadecimal)
  • 0 <==> 0 (00 en hexadecimal)

Para 1%

  • 1 * 255/100 = 2,5
  • 2,5 en hexa es 2 si lo redondeas

Para 2%

  • 2 * 255/100 = 5
  • 5 en hexa es 5 .

La tabla en la mejor respuesta da el porcentaje por paso del 5%.

¿Cómo calcular los números en tu cabeza? Debido a la 2.5 incremente, agregue 2 a la primera y 3 a la siguiente

  • 95% - F2 // inicio
  • 96% - F4 // agrega 2 a F2
  • 97% - F7 // agregar 3. O F2 + 5 = F7
  • 98% - F9 // agregar 2
  • 99% - FC // agregar 3. 9 + 3 = 12 en hexa: C
  • 100% - FF // agregar 2

Prefiero enseñar cómo encontrar la solución en lugar de dar la mesa

Dale a un hombre un pescado y lo alimentas por un día; enseñar a un hombre a pescar y   lo alimentas para toda la vida


89
2018-03-19 10:14



La notación hexadecimal en color es como la siguiente: #AARRGGBB

  • A: alfa
  • R: rojo
  • G: verde
  • B: azul

Primero debes ver cómo hexadecimal trabajos. Puedes escribir como máximo FF.


26
2018-04-06 14:35



Esa tabla no muestra porcentajes. "# 90" no es "90%". Ese gráfico muestra la conversión hexadecimal a decimal. El número hexadecimal 90 (típicamente representado como 0x90) es equivalente al número decimal 144.

Los números hexadecimales son base-16, por lo que cada dígito es un valor entre 0 y F. El valor máximo para un valor hexadecimal de dos bytes (como la transparencia de un color) es 0xFF o 255 en decimal. Por lo tanto, el 100% es 0xFF.


20
2018-04-06 14:39



Creé este pequeño método de ayuda para una aplicación de Android, puede ser de uso:

 /**
 * @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;
}

15
2018-06-24 11:03



enter image description here

Esta podría ser una respuesta muy tarde ... Pero esta tabla lo mata.

Todos los valores porcentuales se asignan a los valores hexadecimales.

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


15
2018-04-22 08:31



prueba esto en la búsqueda de google (o haga clic aquí)

255 * .2 to hex

generará 0x33 como resultado.

Sin embargo, google no redondea los valores por lo que solo puedes usar multiplicadores de 1 dígito. si quiere usar digamos .85, primero tiene que obtener el valor redondeado de 255 * .85, luego escriba (rounded-value here) to hex en la búsqueda de google


5
2018-06-11 06:09



Usando python para calcular esto, por ejemplo (escrito en python 3), 50% de transparencia:

hex(round(256*0.50))

:)


2
2017-12-12 02:16