Pregunta

Tengo una lista de valores de color codificados como enteros con signo (OLE creo) en un archivo INI legado que tengo que traducir en valores (A) RGB con .NET. Un INI ejemplo:

[INI_Section]
Color=-2147483633

Hacer algo como:

Color.FromArgb(-2147483633)

da una versión alfa-mezclado de un color que no es para nada lo que esperaba. Creo que un valor como -2147483633 se supone que representa un color, o el nombre definido por el sistema como ButtonFace. ¿Hay un método .NET para traducir estos colores heredados correctamente? Tenga en cuenta que PInvoke a Olepro32.dll no es una opción.

¿Fue útil?

Solución

Se puede utilizar ColorTranslator.FromOle para hacer la conversión.
http://msdn.microsoft.com/en- es / library / system.drawing.colortranslator.fromole.aspx

Otros consejos

Si de alguna razón no se puede utilizar System.Drawing lib (por ejemplo, en función de Azure) que se puede calcular así:

                var ole = 6579300;
                var red = ole % 256;
                var green = (ole / 256) % 256;
                var blue = (ole / 65536) % 256;
                var backToOle = red + (green * 256) + (blue * 256 * 256);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top