Как перевести устаревшие (OLE) цвета на (а) RGB с .NET?
-
02-10-2019 - |
Вопрос
У меня есть список цветовых значений, закодированных как подписанные целые числа (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);