C#刷到字符串

时间:2012-10-11 14:31:52

标签: c# string brush

我搜索一种方法来将画笔的颜色保存为字符串。 例如,我有一个红色的画笔。 现在我想在文本框中写“红色”。

感谢您的帮助。

4 个答案:

答案 0 :(得分:2)

这是什么类型的刷子?如果是绘图命名空间,那么brush是一个抽象类。对于SolidBrush,请执行:

brush.Color.ToString()

否则,获取color属性并使用ToString()方法将颜色转换为其字符串表示形式。

答案 1 :(得分:2)

如果Brush是使用Color中的System.Drawing.Color创建的,那么您可以使用Color的{​​{3}}属性。

否则,您可以尝试使用反射

查找颜色
// hack
var b = new SolidBrush(System.Drawing.Color.FromArgb(255, 255, 235, 205));
var colorname = (from p in typeof(System.Drawing.Color).GetProperties()
                 where p.PropertyType.Equals(typeof(System.Drawing.Color))
                 let value = (System.Drawing.Color)p.GetValue(null, null)
                 where value.R == b.Color.R &&
                       value.G == b.Color.G &&
                       value.B == b.Color.B &&
                       value.A == b.Color.A
                 select p.Name).DefaultIfEmpty("unknown").First();

// colorname == "BlanchedAlmond"

或者自己创建一个映射(并通过Dictionary查看颜色),可能使用周围许多颜色表的Name

修改

您撰写评论说您使用System.Windows.Media.Color,但仍然可以使用System.Drawing.Color查找颜色名称。

var b = System.Windows.Media.Color.FromArgb(255, 255, 235, 205);
var colorname = (from p in typeof(System.Drawing.Color).GetProperties()
                 where p.PropertyType.Equals(typeof(System.Drawing.Color))
                 let value = (System.Drawing.Color)p.GetValue(null, null)
                 where value.R == b.R &&
                       value.G == b.G &&
                       value.B == b.B &&
                       value.A == b.A
                 select p.Name).DefaultIfEmpty("unknown").First();

答案 2 :(得分:0)

基本上我会发布已经回答的内容。

string color = textBox1.Text;

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

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

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

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

原始答案:Convert string to Brushes/Brush color name in C#

答案 3 :(得分:0)

我有一个 System.Drawing.Brush 对象,但无法访问颜色信息。也不能输入颜色。可以将其投射到颜色信息可用的 SolidBrush。我能够将我的 upsert: true 对象投射到 SolidBrush,然后以这种方式从颜色中提取名称。

Brush color