Вопрос

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

[INI_Section]
Color=-2147483633

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

Color.FromArgb(-2147483633)

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

Это было полезно?

Решение

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

Другие советы

Если по какой-либо причине вы не можете использовать систему. Рубрики 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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top