Search code examples
c#.netvb.netolecolortransform

How to translate legacy (OLE) colors to (A)RGB with .NET?


I have a list of color values encoded as signed integers (OLE I think) in a legacy INI file that I need to translate into (A)RGB values with .NET. An INI example:

[INI_Section]
Color=-2147483633

Doing something like:

Color.FromArgb(-2147483633)

gives an alpha-blended version of a color that is not at all what I expect. I think that a value like -2147483633 is supposed to represent a system-defined, or named color like ButtonFace. Is there a .NET method for translating these legacy colors properly? Note that pInvoke to OlePro32.dll is not an option.


Solution

  • You can use ColorTranslator.FromOle to do the conversion.
    http://msdn.microsoft.com/en-us/library/system.drawing.colortranslator.fromole.aspx