【问题标题】:Converting brush[] to string or brush[] to color[] to string [duplicate]将刷子 [] 转换为字符串或刷子 [] 转换为颜色 [] 转换为字符串 [重复]
【发布时间】:2015-10-15 18:13:01
【问题描述】:

我不是想将画笔转换为字符串,而是将数组画笔转换为字符串。

我需要在 xml 上写一个 txt 文件,然后我试图将 brush[] 转换为 string,但我不知道如何直接这样做。

所以,我尝试先转换为color,然后将color 转换为string

我正在为代码不允许我编写这部分的第一次转换而苦苦挣扎:

Color[] cor1_local = new Pen(cor_local[i]).Color[];

cor_localbrush[]

代码:

xml.WriteStartElement("cor_frmlocal");
for (int i = 0; i < cor_local.Length; i++)
{
    Color[] cor1_local = new Pen(cor_local[i]).Color[];
    xml.WriteElementString("Cor_local", cor1_local[i].ToArgb().ToString());
}
xml.WriteEndElement();

【问题讨论】:

标签: c# string colors brush


【解决方案1】:

尝试使用它

        xml.WriteStartElement("cor_frmlocal");
        for (int i = 0; i < cor_local.Length; i++)
        {
            xml.WriteElementString("Cor_local", ((SolidBrush)cor_local[i]).Color.ToArgb().ToString());
        }
        xml.WriteEndElement();

问题在于使用不包含 Color 属性的基本 Brush 类对象引用。要处理这个问题,您必须将其转换回 SolidBrush

转换刷回

1) 创建画笔列表var brushList = new List&lt;Brush&gt;();

2) 将颜色值读取为var colorValue = Convert.ToInt32(reader.ReadElementString());

3) 根据该值创建颜色 var color = Color.FromArgb(colorValue);

4) 创建新画笔并将其添加到列表list.Add(new SolidBrush(color));

结果代码如下所示

XmlTextReader reader = new XmlTextReader(filename);
string node_info = "";
var brushList = new List<Brush>();

while(reader.Read())
{
    node_info = reader.Name;

    if (node_info == "cor_frmlocal")
    {
         var colorValue = Convert.ToInt32(reader.ReadElementString());
         var color = Color.FromArgb(colorValue);
         list.Add(new SolidBrush(color));
    }
}

【讨论】:

  • 我之前尝试过使用它,但它在.Color上出现问题
  • ToArgb() 方法返回无符号整数值
  • 'System.Drawing.Brush' 不包含'Color' 的定义,并且找不到接受'System.Drawing.Brush' 类型的第一个参数的扩展方法'Color'(你是缺少 using 指令或程序集引用?)
  • 你用的是什么刷子?
  • 如果你用的是普通刷子,现在应该可以了。
猜你喜欢
  • 1970-01-01
  • 2016-08-11
  • 2018-07-25
  • 2020-07-27
  • 2016-05-26
  • 1970-01-01
  • 1970-01-01
  • 2011-03-05
  • 2019-10-10
相关资源
最近更新 更多