-2

编辑: map[][] 充满了按钮

主要问题是 .image 似乎无法保存。我想做一个加载,当我在每个地图[i][j]中加载它时,它会恢复它以前的状态。一切似乎都适用于 .image

FileStream file = new FileStream(@""+AppDomain.CurrentDomain.BaseDirectory+ "\\objects\\savegame"+spacing+".sav", FileMode.Create, FileAccess.ReadWrite);

StreamWriter sw = new StreamWriter(file);
        for (Int32 i = 0; i <columns; i++)
        {
            for (Int32 j = 0; j < columns; j++)
            {
                sw.WriteLine(map[i][j].Enabled);
                sw.WriteLine(map[i][j].Enabled);
                sw.WriteLine(map[i][j].Image);
                sw.WriteLine(map[i][j].Tag);
                sw.WriteLine(map[i][j].Text);
                sw.WriteLine(map[i][j].Name);
                sw.WriteLine( map[i][j].Height);
                sw.WriteLine(map[i][j].Width);
            }
        } 


FileStream file = new FileStream(@"" + AppDomain.CurrentDomain.BaseDirectory + "\\objects\\savegame" + spacing + ".sav", FileMode.Create, FileAccess.ReadWrite);
    StreamReader sr = new StreamReader(file);  
for (Int32 i = 0; i < columns; i++)
    {
        for (Int32 j = 0; j < columns; j++)
        {
            map[i][j].Enabled = Convert.ToBoolean(sr.ReadLine());
            map[i][j].Image = Convert.ToString(sr.ReadLine());// this is the problem
            map[i][j].Tag = Convert.ToString(sr.ReadLine());
            map[i][j].Text = Convert.ToString(sr.ReadLine());
            map[i][j].Name = Convert.ToString(sr.ReadLine());
            map[i][j].Height = Convert.ToInt32(sr.ReadLine());
            map[i][j].Width = Convert.ToInt32(sr.ReadLine());
        }
    }
sr.Close();
}

//Sample location for the image --->map[i][j].Image = Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + "objects\\map\\mapgrass" + spacing + ".png");
4

1 回答 1

1

我不太了解您的问题,但我可以看到一个错误:请不要忘记在Close您的流中写入,并将您的代码放入using块中。

using(StreamWriter sw = new StreamWriter(file))
{
    for (Int32 i = 0; i <columns; i++)
    {
    .....
    }

    sw.Close();
}

更新:

如果使用WriteLine(map[i][j].Image),系统实际调用WriteLine(map[i][j].Image.ToString())返回 Image 类的名称。如果你想保存任何有用的信息,你必须放在那里map[i][j].Image.somethingmap[i][j].whatever_useful。图像是一个二进制对象 - 通常是位图图片,您不能将其作为一个整体保存到文本文件中并从中加载回来。

于 2013-03-22T15:18:43.270 回答