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.

È stato utile?

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top