Pregunta

Estoy estudiando getPixel32 () y las clases de mapa de bits y de mapa de bits de datos. Básicamente, me gustaría saber cómo va a salir un simple trazo de un ARGB de un valor hexadecimal.

Como nota aparte, estoy bajo la impresión, que supongo / esperanza está mal, que los valores hexadecimales no puede producir tantos colores como valores RGBA. quizá "Safe Web" me ha arrojado con la comprensión de la utilidad o el deseo de colores de uso produce con valores hexadecimales.

¿Fue útil?

Solución

Para extraer la información de color que tiene que trabajar con los operadores bit a bit. Los colores se almacenan como 0xAARRGGBB así que hay que extraer aquellas partes. El pequeño fragmento debe hacer el trabajo:

var hex: uint = 0x00ff00ff;
var a: int = (hex >>> 0x18) & 0xff;
var r: int = (hex >>> 0x10) & 0xff;
var g: int = (hex >>> 0x08) & 0xff;
var b: int = hex & 0xff;

trace(a, r, g, b);

En función de cómo se especifica RGBA valora el cambio de respuesta fuerzas. Si utiliza los valores RGBA, donde cada canal se especifica mediante un byte, se puede expresar exactamente tanto como los colores en un valor hexadecimal. Su "valor hexadecimal" es un entero sin signo que consta de 4 bytes. En Flash hay también el tipo de número que consitsts de 64 bits para cada canal se expresaría una 8-bytes en lugar de uno. Se puede imaginar que usted tiene mucha más precisión. Sin embargo, probablemente su pantalla se establece en "True Color (32 bits)" y no será capaz de demostrar que muchos colores. Que vaya más allá de doble precisión (64 bits) y la precisión decimal uso, que se utiliza sobre todo para los cálculos financieros. Cada valor se compone de 128 bits que hace 16 bytes para cada canal. Esto es 16 veces más que al usar su representación hexadecimal. Por supuesto que es mucho más precisión, pero el monitor no será capaz de manejar la situación.

Una nota al margen. Su tamaño de la imagen también es ancho altura canales * (bytes por canal). Así que si usa un byte por canal, que es de 8 bits se obtiene ya suficientes colores. Para una imagen grande la diferencia es bastante grande si se pasa de 8 bits a 32 bits por canal.

Una imagen 1024x768 con una precisión de 8 bits es 3072kb mientras que la misma imagen de 32 bits es 12288kb en la memoria. Esa misma imagen tomaría 24576kb utilizando el tipo de Número de flash. Así que usted es probablemente mejor de quedarse con una precisión de 8 bits que debería ser suficiente en la mayoría de los casos.

Espero que ayude y usted tiene una mejor comprensión de ahora de las imágenes y su estructura.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top