Comment traduire les couleurs existantes (OLE) à (A) RGB avec .NET?
-
02-10-2019 - |
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.
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);