Как перевести устаревшие (OLE) цвета в (A) RGB с .NET? - PullRequest
1 голос
/ 28 апреля 2010

У меня есть список значений цвета, закодированных как целые числа со знаком (я думаю, OLE) в устаревшем INI-файле, который мне нужно преобразовать в (A) значения RGB с помощью .NET. Пример INI:

[INI_Section]
Color=-2147483633

Делать что-то вроде:

Color.FromArgb(-2147483633)

дает альфа-смешанную версию цвета, который совсем не то, что я ожидаю. Я думаю, что значение, подобное -2147483633, должно представлять системный или именованный цвет, например ButtonFace. Существует ли метод .NET для правильного перевода этих устаревших цветов? Обратите внимание, что pInvoke to OlePro32.dll не поддерживается.

Ответы [ 2 ]

11 голосов
/ 28 апреля 2010

Вы можете использовать ColorTranslator.FromOle, чтобы сделать преобразование.
http://msdn.microsoft.com/en-us/library/system.drawing.colortranslator.fromole.aspx

0 голосов
/ 26 февраля 2019

Если по какой-то причине вы не можете использовать 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);
...