レガシー(OLE)の色を.NETで(a)RGBに翻訳する方法は?
-
02-10-2019 - |
質問
.NETを使用して(a)RGB値に翻訳する必要があるレガシーINIファイルで、署名された整数(OLE)としてエンコードされた色の値のリストがあります。 INIの例:
[INI_Section] Color=-2147483633
のようなことをする:
Color.FromArgb(-2147483633)
私が期待しているものではない色のアルファブレンドバージョンを提供します。 -2147483633のような値は、システム定義の、または名前のようなボタンフェイスを表すことになっていると思います。これらのレガシーカラーを適切に翻訳するための.NETメソッドはありますか? Pinvoke to Olepro32.dllはオプションではないことに注意してください。
解決
ColorTranslator.fromoleを使用して、変換を行うことができます。
http://msdn.microsoft.com/en-us/library/system.drawing.colortranslator.fromole.aspx
他のヒント
何らかの理由から、system.drawing lib(azure function)を使用できない場合は、次のように計算できます。
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