여기 내 코드입니다. 간단하고 작동해야하지만, 그렇지 않아서 나를 미치게 만듭니다. 나는 모든 것이 예상대로 작동하고, 그것의 모든 부분을 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입니다. 나는 왜 그것이 작동하지 않을지 전혀 모른다, 아마 바보 같은 내가 간과했다.
고맙습니다.
는 조건이 실제로 TRUE ''로 평가합니까? 나는 당신의 픽셀 색상이 그 8 가지 값과 정확히 일치하지 않는다고 생각합니다. –
팁 : 'else'를 추가하면 첫 번째 일치 항목이 발견 된 후 테스트가 중단됩니다. 이 경우 두 개 이상의 'if'테스트와 일치하는 색상이 없어야하지만 다른 응용 프로그램에서는 문제가 될 수 있습니다. 또한 앤드류 아놀드 (Andrew Arnold)가 제안한 남은 음식을 잡는 마지막 'else'를 가질 수 있습니다. 대안은'default' 절이있는'switch' 문입니다. – HABO
왜 map 변수를 사용하는지 궁금합니다. 'if' 조건에있는 모든'map' 할당을'file.Write'로 대체하지 마시오. – Icemanind