vidrio verde ventanas rojo para darle dar cómo composicion como colores color azul winapi aero user-preferences dwm

winapi - verde - vidrio rojo



Vista/7: ¿Cómo obtener el color del vidrio? (3)

¿Cómo te parece A0F040?

OP Edit: Así es como me parece 0xA0F040:

¿Cómo se usa DwmGetColorizationColor ?

La DwmGetColorizationColor dice que devuelve dos valores:

  • un 0xAARRGGBB 32 bits que contiene el color utilizado para la composición del vidrio
  • un parámetro booleano que es verdadero "si el color es una mezcla opaca" ( lo que sea que eso signifique )

Aquí hay un color que me gusta, un bonito vómito verde:

Puede observar que el color es verde, y la barra de título translúcida (sobre un fondo blanco) muestra el color del moco muy claramente:

Intento obtener el color de Windows:

DwmGetColorizationColor(dwCcolorization, bIsOpaqueBlend);

Y yo obtengo

dwColorization: 0x0D0A0F04 bIsOpaqueBlend: false

Según la documentación, este valor tiene el formato AARRGGBB , y por lo tanto contiene:

AA: 0x0D (13) RR: 0x0A (10) GG: 0x0F (15) BB: 0x04 (4)

Esto supuestamente significa que el color es (10, 15, 4), con una opacidad de ~ 5.1%.

Pero si realmente miras este valor RGB, no está cerca de mi verde moco deseado. Aquí está

  • (10, 15, 4) con opacidad cero (el color original), y
  • (10,15,4) con un 5% de opacidad contra un fondo blanco / tablero de ajedrez:

En lugar de ser verde Lime , DwmGetColorizationColor devuelve un negro casi completamente transparente.

Entonces la pregunta es: ¿Cómo obtener el color del vidrio en Windows Vista / 7?

Intenté usar DwmGetColorizationColor , pero eso no funciona muy bien.

Una persona con el mismo problema, pero una imagen brillante más bonita para atraer a las ardillas:

Por lo tanto, se reduce a - DwmGetColorizationColor es completamente inutilizable para las aplicaciones que intentan aplicar el color actual en una superficie opaca.

Me encantan las capturas de pantalla de este tipo mucho mejor que las mías. Usando sus capturas de pantalla como plantilla, inventé algunas más chispazos:

Para las dos últimas capturas de pantalla, el chip alfa mezclado es un verdadero PNG parcialmente transparente, que se mezcla con el fondo de su navegador. ¡Guay! (Soy un geek)

Edición 2: Tuve que colocarlos en color arcoíris. (Soy un geek)

Edición 3: Bueno, ahora por supuesto tengo que agregar Amarillo.

Métodos alternativos no documentados / no admitidos / frágiles

Hay una exportación no documentada desde DwmApi.dll en el punto de entrada 137, que llamaremos DwmGetColorizationParameters :

HRESULT GetColorizationParameters_Undocumented(out DWMCOLORIZATIONPARAMS params); struct DWMCOLORIZATIONPARAMS { public UInt32 ColorizationColor; public UInt32 ColorizationAfterglow; public UInt32 ColorizationColorBalance; public UInt32 ColorizationAfterglowBalance; public UInt32 ColorizationBlurBalance; public UInt32 ColorizationGlassReflectionIntensity; public UInt32 ColorizationOpaqueBlend; }

Estamos interesados ​​en el primer parámetro: ColorizationColor .

También podemos leer el valor fuera del registro:

HKEY_CURRENT_USER/Software/Microsoft/Windows/DWM ColorizationColor: REG_DWORD = 0x6614A600

Así que elige su veneno para crear problemas con los appcompat. Usted puede

Ver también

Hace más de un año que quiero hacer esta pregunta. Siempre supe que es imposible responder, y que la única manera de que alguien preste atención es con capturas de pantalla coloridas; los desarrolladores se sienten atraídos por cosas brillantes. Pero a la baja significa que tuve que poner todo tipo de trabajo en hacer los señuelos.


Colorización color = el color base elegido. Es engañoso, lo sé.

Pero estoy confundido La imagen que tomaste prestada fue de mi publicación titulada " Recuperación del color base de Aero Glass para una representación opaca de la superficie ". ¿No es esto lo que quieres hacer? También indiqué en la publicación la ubicación del registro en la que se almacena toda la información del color (HKEY_CURRENT_USER / Software / Microsoft / Windows / DWM) con fines de recuperación.

Editado 8/26

DwmGetColorizationColor (dwmapi.dll) devuelve el "color de colorización", que es una mezcla de varios colores (incluido el color de base seleccionado) y la lógica de sombreado para lograr el efecto de vidrio en general.

Toda la información de color que necesita / desea se puede encontrar en la clave de registro indicada anteriormente. El color de base, los colores utilizados en la mezcla y el color de color resultante están todos allí.

(La clave anterior está presente en Windows Vista y más arriba).


Creo que he resuelto el Aero Color. El color proporcionado por ColorizationColor es, de hecho, AARRGGBB, pero no está siendo utilizado de la manera que usted piensa en absoluto. Y para resolver el color final, también necesita obtener la Intensidad de Color como se muestra aquí: http://www.codeproject.com/Articles/610909/Changing-Windows-Aero-Color

El primer paso es analizar AARRGGBB. Luego tome el RGB resultante y conviértalo en HSV. El tono puro más Saturación con brillo completo es el color base. Ahora superponga Valor como una escala de grises en Alfa sobre la parte superior de Tono puro y Saturación para obtener el color Aero. Luego superponga ese color sobre el color del marco: rgb (235, 235, 235) en Intensity para obtener el resultado de color Aero Composite final.

Por último, también proporcioné un ejemplo de cómo extraer un color de barra de herramientas utilizable que coincida con el color del cuadro Aero, pero siempre funcionará con texto negro y otras características básicas de Aero. Esto se logra al limitar la Intensidad al 35%.

Aquí está la matemática:

function dwmToRgb() { // Input Values var colorizationColor = "a84f1b1b"; // dwmcolor.clrColor = ColorizationColor var colorizationColorBalance = 60; // dwmcolor.nIntensity = ColorizationColorBalance var F = 235; // Frame base grayscale color when Transparency is disabled // Parse the input values var A = Math.round(parseInt(colorizationColor.substr(0,2),16)/2.55)/100; var R1 = parseInt(colorizationColor.substr(2,2), 16); var G1 = parseInt(colorizationColor.substr(4,2), 16); var B1 = parseInt(colorizationColor.substr(6,2), 16); var I = colorizationColorBalance/100; // Solve for HSV Value and pure Hue+Sat var V = Math.max(R1, G1, B1); var R2 = R1*255/V; var G2 = G1*255/V; var B2 = B1*255/V; // Aero Frame Pure Hue: Overlay Value @ Alpha over pure Hue+Sat var R3 = Math.round(V+(R2-V)-((R2-V)*A)); var G3 = Math.round(V+(G2-V)-((G2-V)*A)); var B3 = Math.round(V+(B2-V)-((B2-V)*A)); var hexRGB3 = "#" + ((1 << 24) + (R3 << 16) + (G3 << 8) + B3).toString(16).slice(1); // Aero Frame Composite Color: Overlay RGB3 @ Intensity over Frame base color var R4 = Math.round(R3+(F-R3)-((F-R3)*I)); var G4 = Math.round(G3+(F-G3)-((F-G3)*I)); var B4 = Math.round(B3+(F-B3)-((F-B3)*I)); var hexRGB4 = "#" + ((1 << 24) + (R4 << 16) + (G4 << 8) + B4).toString(16).slice(1); // Aero Toolbar Color: Overlay RGB3 @ max 35% Intensity over Frame base color if (I > 0.35) { I5 = 0.35;} else { I5 = I;} var R5 = Math.round(R3+(F-R3)-((F-R3)*I5)); var G5 = Math.round(G3+(F-G3)-((F-G3)*I5)); var B5 = Math.round(B3+(F-B3)-((F-B3)*I5)); var hexRGB5 = "#" + ((1 << 24) + (R5 << 16) + (G5 << 8) + B5).toString(16).slice(1);