كيفية ترجمة ألوان Legacy (OLE) إلى (أ) RGB مع .NET؟
-
02-10-2019 - |
سؤال
لدي قائمة بقيم الألوان المشفرة على أنها أعداد صحيحة موقعة (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);
لا تنتمي إلى StackOverflow