2014-09-19 17 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(); 
    } 

XS와 YS는 단지입니다 비트 맵의 ​​형식은 Format24bppRgb입니다. 나는 왜 그것이 작동하지 않을지 전혀 모른다, 아마 바보 같은 내가 간과했다.

고맙습니다.

+3

는 조건이 실제로 TRUE ''로 평가합니까? 나는 당신의 픽셀 색상이 그 8 가지 값과 정확히 일치하지 않는다고 생각합니다. –

+1

팁 : 'else'를 추가하면 첫 번째 일치 항목이 발견 된 후 테스트가 중단됩니다. 이 경우 두 개 이상의 'if'테스트와 일치하는 색상이 없어야하지만 다른 응용 프로그램에서는 문제가 될 수 있습니다. 또한 앤드류 아놀드 (Andrew Arnold)가 제안한 남은 음식을 잡는 마지막 'else'를 가질 수 있습니다. 대안은'default' 절이있는'switch' 문입니다. – HABO

+0

왜 map 변수를 사용하는지 궁금합니다. 'if' 조건에있는 모든'map' 할당을'file.Write'로 대체하지 마시오. – Icemanind

답변