如何使用.NET将传统(OLE)颜色转换为(A)RGB?

时间:2010-04-28 19:03:19

标签: c# .net vb.net ole colortransform

我有一个颜色值列表,编码为遗留INI文件中的有符号整数(我认为是OLE),我需要将其转换为(A)RGB值。 INI示例:

[INI_Section]
Color=-2147483633

做类似的事情:

Color.FromArgb(-2147483633)

给出了一种颜色的alpha混合版本,这完全不是我所期望的。我认为像-2147483633这样的值应该表示像ButtonFace这样的系统定义或命名颜色。是否有正确翻译这些传统颜色的.NET方法?请注意,pInvoke到OlePro32.dll不是一个选项。

2 个答案:

答案 0 :(得分:11)

您可以使用ColorTranslator.FromOle进行转换。
http://msdn.microsoft.com/en-us/library/system.drawing.colortranslator.fromole.aspx

答案 1 :(得分:0)

如果由于某种原因您无法使用System.Drawing lib(例如,在Azure函数中),则无法进行如下计算:

                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);