我有一个在旧文件中编码为签名整数(OLE)的颜色值列表,我需要将其转换为(a)使用.NET的RGB值。一个INI示例:

[INI_Section]
Color=-2147483633

做类似的事情:

Color.FromArgb(-2147483633)

给出颜色的α-混合版本,这根本不是我所期望的。我认为像-2147483633这样的值应该代表系统定义或命名的颜色,例如按钮表面。是否有一个.NET方法可以正确翻译这些遗产颜色?请注意,pinvoke to olepro32.dll不是一个选择。

有帮助吗?

解决方案

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

其他提示

如果由于某种原因无法使用System.Draw 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);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top