2017-07-19 45 views
0

我有一個窗體窗體,我希望用戶指定刷子system.drawing.brush的顏色,然後我的應用程序消耗這本地。有很多筆刷顏色,我想知道是否有可能枚舉所有可能的顏色組合?簡單的方法來枚舉類屬性,然後指定該屬性

我可以用它們填充組合框。那麼第二部分就是以編程方式指定畫筆屬性,而不必執行查找表。

回答

0

對於色彩名稱的列表,你可以使用Reflection

Type colorType = typeof(System.Drawing.Color); 

PropertyInfo[] propInfoList = colorType.GetProperties(BindingFlags.Static | BindingFlags.DeclaredOnly | BindingFlags.Public); 

var colorNames = propInfoList.Select(c => c.Name); 

使用該列表來填充組合框

然後,一旦用戶選擇的顏色,你可以使用以下命令來創建一個刷:

var brushColor = Color.FromName(selectedColorFromCombo); 

var brush = new SolidBrush(brushColor); 
+1

我必須將colorNames的數據類型更改爲列表,以使組合框可以接受爲數據源,但在其他方面是完美的,謝謝。 – Stevie187

0

最好的選擇是宣佈像public enum BrushColor{...}這樣的枚舉器,列出所有的顏色。然後,使用此枚舉器,您可以自動填充組合框,然後根據用戶輸入確定顏色也很容易(switch塊)。

你可以使用反射得到的顏色列表:

Type brushes = typeof(Brushes); 
var colorList = from color in brushes.GetProperties() select color.Name; 

結合這段代碼在一開始,你可以實現你想要的結果中提到的邏輯。

+0

感謝您的回覆,但我想避免必須這樣做,如果我可以只是研究如何設置靜態刷類的屬性與變量,所以我可以傳遞給DrawString因爲似乎有很多關於如何枚舉屬性的信息,並將它們放入一個不錯的列表中。 – Stevie187

+0

查看edtied的答案。 –