我有一个颜色值列表,编码为遗留INI文件中的有符号整数(我认为是OLE),我需要将其转换为(A)RGB值。 INI示例:
[INI_Section] Color=-2147483633
做类似的事情:
Color.FromArgb(-2147483633)
给出了一种颜色的alpha混合版本,这完全不是我所期望的。我认为像-2147483633这样的值应该表示像ButtonFace这样的系统定义或命名颜色。是否有正确翻译这些传统颜色的.NET方法?请注意,pInvoke到OlePro32.dll不是一个选项。
答案 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);