如何将遗产(OLE)颜色转换为(a)使用.NET的RGB?
-
02-10-2019 - |
题
我有一个在旧文件中编码为签名整数(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);
不隶属于 StackOverflow