我搜索一种方法来将画笔的颜色保存为字符串。 例如,我有一个红色的画笔。 现在我想在文本框中写“红色”。
感谢您的帮助。
答案 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);
答案 3 :(得分:0)
我有一个 System.Drawing.Brush 对象,但无法访问颜色信息。也不能输入颜色。可以将其投射到颜色信息可用的 SolidBrush。我能够将我的 upsert: true
对象投射到 SolidBrush,然后以这种方式从颜色中提取名称。
Brush color