2015-10-15 5 views
1

Я не пытаюсь преобразовать кисть в строку, а массив щетки в строку.Преобразование кисти [] в строку или кисть [] в цвет [] в строку

Мне нужно написать txt-файл на xml, а затем я пытаюсь преобразовать brush[] в string, но я не знаю, как это происходит напрямую.

Итак, я попытался преобразовать сначала в color, а затем я бы преобразовал color в string.

Я борюсь с первым преобразованием, где код не позволяет мне написать эту часть:

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

cor_local является brush[].

Код:

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(); 
+1

Я хотел бы предложить [* сериализации *] (https://msdn.microsoft.com/en-us/library/182eeyhh%28v=vs.110%29.aspx) цветов и кистей. – cubrr

ответ

0

Попробуйте использовать этот

 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(); 

проблема была в использовании ссылок на объекты класса базового Brush, которые не содержат свойство цвета. Чтобы справиться с этим, вы должны вернуть его обратно в SolidBrush.

Для преобразования кисти обратно

1) создать список кистей var brushList = new List<Brush>();

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)); 
    } 
} 
+0

Я пытался использовать его раньше, но проблема возникает .Color – Tullio

+0

В чем проблема? – Mykola

+0

'ToArgb()' метод возвращает значение unsigned int – Mykola

 Смежные вопросы

  • Нет связанных вопросов^_^