C# 如何将System.Drawing.Brush转换为字符串

C# 如何将System.Drawing.Brush转换为字符串,c#,C#,我找不到任何正确的解决办法 string colorName = ...converting... Brushes.Brown; So colorName should have 'Brown' 有可能吗?看来我找到了一个办法 public string GetColorName(Brush brush) { string name = "Unknown"; Color c = new Pen(brush).Color;

我找不到任何正确的解决办法

string colorName = ...converting... Brushes.Brown;

So colorName  should have 'Brown'

有可能吗?

看来我找到了一个办法

public string GetColorName(Brush brush)
        {
            string name = "Unknown";
            Color c = new Pen(brush).Color;

            foreach (KnownColor kc in Enum.GetValues(typeof(KnownColor)))
            {
                Color known = Color.FromKnownColor(kc);
                if (c.ToArgb() == known.ToArgb())
                {
                    name = known.Name;
                    break;
                }
            }

            return name;
        }

看来我找到了一个办法

public string GetColorName(Brush brush)
        {
            string name = "Unknown";
            Color c = new Pen(brush).Color;

            foreach (KnownColor kc in Enum.GetValues(typeof(KnownColor)))
            {
                Color known = Color.FromKnownColor(kc);
                if (c.ToArgb() == known.ToArgb())
                {
                    name = known.Name;
                    break;
                }
            }

            return name;
        }

要获得所需的结果,您可以使用:

string colorName = nameof(Brushes.Brown);

现在
colorName
应该具有值
'Brown'

要获得所需的结果,可以使用:

string colorName = nameof(Brushes.Brown);

现在
colorName
应该有值
'Brown'

关于我能想到的唯一方法是使用反射来循环遍历
System.Drawing.brush
类的所有静态属性,并测试每个属性的值与您试图查找其名称的笔刷之间的相等性。如何
nameof(brusks.Brown)
?SolidBrush b=brusks.AliceBlue作为SolidBrush;b、 Color.name关于我能想到的唯一方法是使用反射来循环遍历
System.Drawing.brush
类的所有静态属性,并测试每个属性的值与您试图查找其名称的笔刷之间的相等性。那么
nameof(brush.Brown)呢
?SolidBrush b=刷子。AliceBlue作为SolidBrush;b、 颜色。名字