سؤال

أنا أستخدم ويندوز فون.المشكلة هي أنه لا يملك ال Color.FromName بدلا من ذلك لديه Color.FromArgb.

لدي مستطيل وأريد تعيين لون التعبئة الخاص به اعتمادًا على اللون من الملف الذي تتم قراءته.على سبيل المثاللقد قمت بحفظ "الأحمر" في ملف يسمى الألوان.قرأت ذلك وأرسله إلى سلسلة تسمى LpColor الآن سوف يحمل النص "الأحمر" بالداخل.

الآن كيف أستخدم LpColor في Rectangle.Fill = ....القيام بـ Rectangle.Fill = LpColor لن ينجح.

هذا هو الكود الخاص بكيفية قراءة ملفي:

IsolatedStorageFileStream readColor = store.OpenFile("/contactColor.txt", FileMode.Open, FileAccess.Read);
using (StreamReader contactColor = new StreamReader(readColor))
{
  var color = contactColor.ReadToEnd();
  LpColor = color;
}
هل كانت مفيدة؟

المحلول

إذا كان يجب عليك حفظها كسلسلة (أحمر)، فيمكنك كتابة طريقة تحويل والتي ستحول السلسلة مرة أخرى إلى لون.اعتمادًا على عدد الألوان لديك، سيزداد تعقيد الطريقة، لذا قد ترغب في إعادة التفكير في حفظ اللون كاسم - ربما يمكنك حفظه كمزيج من ARGB والاسم؟استخدام فئة للاحتفاظ بهذه المعلومات؟هناك العديد من الخيارات.

على أية حال، المحول البسيط الخاص بك سيفعل شيئًا مثل هذا:

private SolidColorBrush ColorNameToBrush(string colorName)
{
    Color color = Color.FromArgb(0,0,0,0);
    if (colorName == "Red")
    {
        color = new Color() { R = 255, G = 0, B = 0};
    }
    else if ...
    {

    }

    return new SolidColorBrush(color);
}

قد يكون استخدام عبارة التبديل بدلًا من عبارة if-else-if اللانهائية فكرة أفضل إذا كان لديك الكثير من السلاسل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top