2016-12-16 37 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,是什么导致了错误。

其余的代码工作正常。