Come tradurre legacy colori (OLE) a (A) RGB con .NET?
-
02-10-2019 - |
Domanda
Ho una lista di valori di colore codificati come interi con segno (OLE credo) in un file INI eredità che ho bisogno di tradurre in valori (A) RGB con .NET. Un INI esempio:
[INI_Section] Color=-2147483633
fare qualcosa di simile:
Color.FromArgb(-2147483633)
dà una versione alpha-blending di un colore che non è affatto quello che mi aspettavo. Penso che un valore come -2.147,483633 millions dovrebbe rappresentare un colore definito dal sistema, o di nome come ButtonFace. Esiste un metodo .NET per tradurre questi colori legacy correttamente? Si noti che PInvoke per Olepro32.dll non è un'opzione.
Soluzione
È possibile utilizzare ColorTranslator.FromOle per eseguire la conversione.
http://msdn.microsoft.com/en- us / library / system.drawing.colortranslator.fromole.aspx
Altri suggerimenti
Se da qualche motivo non è possibile utilizzare System.Drawing lib (ad esempio in funzione Azure) che si può calcolare in questo modo:
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);