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

Pau*_*sik 1 .net c# vb.net ole colortransform

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

[INI_Section]
Color=-2147483633
Run Code Online (Sandbox Code Playgroud)

做类似的事情:

Color.FromArgb(-2147483633)
Run Code Online (Sandbox Code Playgroud)

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

Chr*_*lor 11

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

  • +1.来自文档的更多内容."如果OLE_COLOR的高位设置,则低位字节被视为系统颜色索引"http://support.microsoft.com/kb/131101所以`8000000F`确实是*按钮面*因为系统颜色COLOR_BTNFACE位于索引15 http://msdn.microsoft.com/en-us/library/ms724371(VS.85).aspx (3认同)