Wie Vermächtnis (OLE) Farben (A) RGB mit .NET zu übersetzen?
-
02-10-2019 - |
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.
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);