2016-12-16 35 views
1

我堅持保存一個數組System.Drawing.Bitmap類型,每個位圖來分開文件。 我有一個數組「調查」。這個數組存儲多個double類型的列表。 對於每個列表我想創建一個位圖,然後將其保存爲bmp文件。 raport[i].Save(Path.Combine(myfilepath, nets[i] + ".bmp"));返回TypeInitializationException - 和我不知道爲什麼。 片nets[i]是一個字典(int,字符串)與期望的文件名。保存數組的位圖來分隔文件與C#

public void save_results() 
    { 
     System.Drawing.Bitmap[] raport = new System.Drawing.Bitmap[survey.Length]; 

     for (int i = 0; i < survey.Length; i++) 
     { 
      raport[i] = new System.Drawing.Bitmap(survey[i].Count, 1000); 

      for (int x = 0; x < survey[i].Count; x++) 
       for (int y = 0; y < 1000; y++) 
        raport[i].SetPixel(x, y, Color.FromArgb(255, 255, 255)); 

      for (int x = 0; x < survey[i].Count; x++) 
       raport[i].SetPixel(x, (int)(1000 - Math.Floor(survey[i][x] * 1000) >= 1000 ? 999 : 1000 - Math.Floor(survey[i][x] * 1000)), Color.FromArgb(0, 0, 0)); 

    raport[i].Save(Path.Combine(myfilepath, nets[i] + ".bmp")); 
     } 
    } 
+3

您需要查看TypeInitializationException的InnerException才能獲取更多信息。請參閱[這裏](http://stackoverflow.com/a/12425381/5095502)。 – Quantic

+0

底層Bitmap.Save調用特定的編解碼器(請參閱System.Drawing.ImageFormat)。我認爲問題在於編解碼器初始化。您可以嘗試明確指定ImageFormat。另外,stacktrace會很有幫助。 –

+0

我曾經有一個類似的問題一次保存多個文件,我認爲這是因爲保存不同步。我不知道情況是否如此。有人可以確認嗎? 我認爲我沒有在C#中編碼,但我想文件保存可能會被類似地處理。保存文件可能需要相當長的時間,但這隻影響硬盤,所以程序的其餘部分可能會繼續。它對我來說是有意義的,如果它在c#中也是異步的 – Jacopo

回答

0

最後,問題與變量「myfilepath」相關聯。 變量是從幾個文件路徑「編輯」 - 和所有那些字符串應該是static

public static string mydoc= Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
    public static string myfilepath_p = Path.Combine(mydoc, "Demeter"); 
    public static string myfilepath= Path.Combine(myfilepath_p, "regresja_liniowa"); 

原來,在引用的代碼只使用了「最終」變量爲static,是什麼導致了錯誤。

其餘的代碼工作正常。