2014-09-19 46 views
0

這是我的代碼,它很簡單,應該可以工作,但不會,並且這會讓我發瘋。我troubleshooted的每一個部分,一切工作正常,但是當我打開我的文件,不管是什麼組成我的位圖,它只是充滿了0試圖將位圖轉換成自制文本格式

下面的代碼:

public void saveToolStripButton_Click(object sender, EventArgs e) 
    { 
     int[,] map = new int[xs,ys]; 
     int yt, xt; 
     yt = 0; 
     Color pixcolor; 
     while (yt < ys) 
     { 
      xt = 0; 
      while (xt < xs) 
      { 
       pixcolor = drawg.myBitmap.GetPixel(xt, yt); 
       if (pixcolor == Color.Green) 
       { 
        map[xt, yt] = 0; 
       } 
       if (pixcolor == Color.Black) 
       { 
        map[xt, yt] = 1; 
       } 
       if (pixcolor == Color.White) 
       { 
        map[xt, yt] = 2; 
       } 
       if (pixcolor == Color.Red) 
       { 
        map[xt, yt] = 3; 
       } 
       if (pixcolor == Color.DarkGreen) 
       { 
        map[xt, yt] = 4; 
       } 
       if (pixcolor == Color.Gray) 
       { 
        map[xt, yt] = 5; 
       } 
       if (pixcolor == Color.IndianRed) 
       { 
        map[xt, yt] = 6; 
       } 
       if (pixcolor == Color.Gold) 
       { 
        map[xt, yt] = 7; 
       } 
       xt++; 
      } 
      yt++; 
     } 
     System.IO.StreamWriter file = new System.IO.StreamWriter("c:\\test.txt"); 
     for (int yl = 0; yl < ys; yl++) 
     { 
      for (int xl = 0; xl < xs; xl++) 
      { 
         file.Write(map[xl,yl].ToString()); 
      } 
      file.Write(Environment.NewLine); 
     } 
    file.Close(); 
    } 

X和Y只是位圖的維度。位圖的格式是Format24bppRgb。我不知道爲什麼它不會工作,可能是我忽視的一些愚蠢的東西。

非常感謝。 「

+3

如果您調試系列'if'報表,做任何的條件,實際上評估爲'真'?我有一種感覺,你的像素顏色沒有與這八個值完全匹配。 – 2014-09-19 15:06:43

+1

提示:添加'else'會在找到第一個匹配項後停止測試。在這種情況下,不應該有任何匹配多個「if」測試的顏色,但在其他應用中它可能是一個問題。它還可以讓你有一個最後的'else'來捕獲Andrew Arnold建議的剩餘食物。另一種方法是使用'default'子句的'switch'語句。 – HABO 2014-09-19 15:10:36

+0

我很好奇你爲什麼使用'map'變量。爲什麼不用'file.Write'替換'if'條件中的所有'map'賦值。 – Icemanind 2014-09-19 15:34:33

回答

相關問題