سؤال

لدي قائمة بقيم الألوان المشفرة على أنها أعداد صحيحة موقعة (OLE على ما أعتقد) في ملف INI LEGACY أحتاج إلى ترجمة إلى (أ) قيم RGB باستخدام .NET. مثال ini:

[INI_Section]
Color=-2147483633

القيام بشيء مثل:

Color.FromArgb(-2147483633)

يعطي نسخة ألفا المخلوطة من لون لا على الإطلاق ما أتوقعه. أعتقد أنه من المفترض أن تمثل قيمة مثل -2147483633 لونًا محددًا من قبل النظام أو اسمه مثل Buttonface. هل هناك طريقة .NET لترجمة هذه الألوان القديمة بشكل صحيح؟ لاحظ أن Pinvoke إلى Olepro32.dll ليس خيارًا.

هل كانت مفيدة؟

المحلول

يمكنك استخدام colortranslator.fromole لإجراء التحويل.
http://msdn.microsoft.com/en-us/library/system.drawing.colortranslator.fromole.aspx

نصائح أخرى

إذا كان لا يمكنك استخدام System من نوع ما.

                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