代码之家  ›  专栏  ›  技术社区  ›  Paul Sasik

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

  •  1
  • Paul Sasik  · 技术社区  · 14 年前

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

    [INI_Section]
    Color=-2147483633
    

    像这样做:

    Color.FromArgb(-2147483633)
    

    给出了一个完全不是我所期望的颜色的alpha混合版本。我认为像-2147483633这样的值应该表示一个系统定义的,或者称为color-like-ButtonFace。有没有一种.NET方法可以正确地翻译这些旧颜色?请注意,pInvoke to OlePro32.dll不是一个选项。

    2 回复  |  直到 14 年前
        1
  •  11
  •   Chris Taylor    14 年前
        2
  •  1
  •   Raskolnikov    6 年前

    如果由于某种原因无法使用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);