Frage

Ich habe eine Liste von Farbwerten codiert als signierte ganze Zahlen (OLE glaube ich) in einem Legacy-INI-Datei, die ich brauche mit .NET in (A) RGB-Werte zu übersetzen. Ein INI Beispiel:

[INI_Section]
Color=-2147483633

Doing so etwas wie:

Color.FromArgb(-2147483633)

gibt eine alpha-blended Version eine Farbe, die nicht überhaupt ist das, was ich erwarte. Ich denke, dass ein Wert wie -2147483633 soll eine systemdefinierte oder benannte Farbe wie Button darzustellen. Gibt es eine .NET-Methode, diese Legacy-Farben richtig zu übersetzen? Beachten Sie, dass pinvoke zu Olepro32.dll ist keine Option.

War es hilfreich?

Lösung

Sie können ColorTranslator.FromOle verwenden, um die Konvertierung zu tun.
http://msdn.microsoft.com/en- us / library / system.drawing.colortranslator.fromole.aspx

Andere Tipps

Wenn aus irgendeinem Grund Sie nicht System.Drawing lib verwenden (zum Beispiel in Azure-Funktion), als Sie wie folgt berechnen:

                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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top