Question

J'ai une liste de valeurs de couleurs codées comme des entiers signés (OLE je pense) dans un fichier INI héritage que je dois traduire en (A) des valeurs RVB avec .NET. Un exemple INI:

[INI_Section]
Color=-2147483633

Faire quelque chose comme:

Color.FromArgb(-2147483633)

donne une version alpha-mélangée d'une couleur qui est pas du tout ce que je pense. Je pense qu'une valeur comme -2147483633 est censé représenter un système défini ou nommé comme couleur ButtonFace. Y at-il une méthode .NET pour traduire ces couleurs héritées correctement? Notez que Pinvoke à olepro32.dll est pas une option.

Était-ce utile?

La solution

Vous pouvez utiliser ColorTranslator.FromOle pour effectuer la conversion.
http://msdn.microsoft.com/en- nous / bibliothèque / system.drawing.colortranslator.fromole.aspx

Autres conseils

Si pour une raison quelconque, vous ne pouvez pas utiliser System.Drawing lib (par exemple en fonction Azure) que vous pouvez calculer comme ceci:

                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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top