c# - कलर - सात रंगों के नाम




सी#में ब्रश/ब्रश रंग का नाम बदलें (6)

आप इसके लिए प्रतिबिंब का उपयोग कर सकते हैं:

Type t = typeof(Brushes);
Brush b = (Brush)t.GetProperty("Red").GetValue(null, null);

बेशक, आपको स्ट्रिंग गलत होने पर कुछ त्रुटि संभाल / श्रेणी की जांच करना होगा।

मेरे पास एक विन्यास फाइल है जहां एक डेवलपर स्ट्रिंग में गुजरने से एक टेक्स्ट रंग निर्दिष्ट कर सकता है:

 <text value="Hello, World" color="Red"/>

संभवतः सभी संभावित रंगों के लिए एक विशाल स्विच स्टेटमेंट देखने के बजाय, यह सिर्फ क्लास सिस्टम में गुणों का उपयोग करना अच्छा होगा.डाउलिंग। ब्रश के बदले आंतरिक रूप से मैं कुछ ऐसा कह सकता हूं:

 Brush color = Brushes.Black;   // Default

 // later on...
 this.color = (Brush)Enum.Parse(typeof(Brush), prasedValue("color"));

सिवाय इसके कि ब्रश में ब्रश / ब्रश नहीं हैं। तो ऐनम। पर्स मुझे कोई खुशी नहीं देता। सुझाव?


एक TypeConverter का उपयोग करने की कोशिश करें उदाहरण:

var tc = TypeDescriptor.GetConverter(typeof(Brush));

एक अन्य विकल्प प्रतिबिंब का उपयोग करना है, और SystemBrushes में गुणों पर जाना है।


यदि आप चाहें, तो आप इसे और अधिक बढ़ा सकते हैं और उन्हें आर, जी और बी मूल्यों के लिए मान निर्दिष्ट करने की अनुमति दे सकते हैं। तब आप केवल कॉल करते हैं। फॉरएआरबीबी (इंट आर, इंट जी, इंट बी);


मैं सहमत हूं कि TypeConverters का उपयोग करना सबसे अच्छा तरीका है:

 Color c = (Color)TypeDescriptor.GetConverter(typeof(Color)).ConvertFromString("Red");
 return new Brush(c);

सभी पिछली उत्तरों की पुनरावृत्ति, एक स्ट्रिंग को किसी रंग या ब्रश में कनवर्ट करने के विभिन्न तरीके:

// best, using Color's static method
Color red1 = Color.FromName("Red");

// using a ColorConverter
TypeConverter tc1 = TypeDescriptor.GetConverter(typeof(Color)); // ..or..
TypeConverter tc2 = new ColorConverter();
Color red2 = (Color)tc.ConvertFromString("Red");

// using Reflection on Color or Brush
Color red3 = (Color)typeof(Color).GetProperty("Red").GetValue(null, null);

// in WPF you can use a BrushConverter
SolidColorBrush redBrush = (SolidColorBrush)new BrushConverter().ConvertFromString("Red");

ब्रश मायब्रुश = नया सॉलिडब्रश (Color.FromName ("Red"));







brush