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。我不知道爲什麼它不會工作,可能是我忽視的一些愚蠢的東西。
非常感謝。 「
如果您調試系列'if'報表,做任何的條件,實際上評估爲'真'?我有一種感覺,你的像素顏色沒有與這八個值完全匹配。 – 2014-09-19 15:06:43
提示:添加'else'會在找到第一個匹配項後停止測試。在這種情況下,不應該有任何匹配多個「if」測試的顏色,但在其他應用中它可能是一個問題。它還可以讓你有一個最後的'else'來捕獲Andrew Arnold建議的剩餘食物。另一種方法是使用'default'子句的'switch'語句。 – HABO 2014-09-19 15:10:36
我很好奇你爲什麼使用'map'變量。爲什麼不用'file.Write'替換'if'條件中的所有'map'賦值。 – Icemanind 2014-09-19 15:34:33