1

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

[INI_Section]
Color=-2147483633

做类似的事情:

Color.FromArgb(-2147483633)

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

4

2 回答 2

12

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

于 2010-04-28T19:10:24.453 回答
1

如果由于某种原因您不能使用 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);
于 2019-02-26T09:18:57.743 回答