2013-03-22 68 views
-2

編輯:地圖[] []充滿了按鈕如何使用帶按鈕的流媒體播放器。圖片

主要問題是.image似乎無法保存。 我想做一個負載,當我加載它在每個地圖[i] [j]恢復其以前的狀態。一切似乎exept的圖像配

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

什麼意思是「.image」? – 2013-03-22 15:16:01

+0

我期望它將當前圖像的位置保存在一行中,但情況並非如此 – Kapein 2013-03-22 15:17:49

+0

如果您需要位置,則需要保存諸如Left或Top之類的屬性。看到我的答案。 – 2013-03-22 15:24:38

回答

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。圖像是一個二進制對象 - 通常是位圖圖片,您不能將其保存爲整個文本文件並從中加載。

+0

哦,我忘了在帖子中添加sw.Close, 錯誤不能隱式地將類型'字符串'轉換爲'System.Drawing.Image' – Kapein 2013-03-22 15:20:29

+0

這真的很好,謝謝我會看到我能現在就做 – Kapein 2013-03-22 15:27:10

+0

請不要告訴我們你真的認爲可以用這種方式將字符串轉換爲圖像。 – 2013-03-22 15:27:43