dポイントプレゼントキャンペーン実施中!

画像処理のチェーンコードが上手くいきません。
言語はC#です。下のようにやってますが、どこかで上手くいっていないみたいです。間違いの指摘をおねがいします。
あるいは、画像処理のチェーンコードのサンプルコードのあるサイトを教えてもらえると助かります。言語はメジャーなものならなんでもかまいません。
for (; ; )
{
if (x == xs && y == ys && l != 0)
{
break;
}

switch (vec)
{
case 3:
if (data[x, y + 1] == 0 && data[x - 1, y + 1] == 255)
{
x = x - 1; y = y + 1; list.Add(1); l++;
}
vec = 0;
break;
case 4:
if (data[x - 1, y + 1] == 0 && data[x - 1, y] == 255)
{
x = x - 1; y = y + 0; list.Add(2); l++;
}
vec = 1;
break;
case 5:
if (data[x - 1, y] == 0 && data[x - 1, y - 1] == 255)
{
x = x - 1; y = y - 1; list.Add(3); l++;
}
vec = 2;
break;
case 6:
if (data[x - 1, y - 1] == 0 && data[x, y - 1] == 255)
{
x = x + 0; y = y - 1; list.Add(4); l++;
}
vec = 3;
break;
case 7:
if (data[x, y - 1] == 0 && data[x + 1, y - 1] == 255)
{
x = x + 1; y = y - 1; list.Add(5); l++;
}
vec = 4;
break;
case 0:
if (data[x + 1, y - 1] == 0 && data[x + 1, y] == 255)
{
x = x + 1; y = y + 0; list.Add(6); l++;
}
vec = 5;
break;
case 1:
if (data[x + 1, y] == 0 && data[x + 1, y + 1] == 255)
{
x = x + 1; y = y + 1; list.Add(7); l++;
}
vec = 6;
break;
case 2:
if (data[x + 1, y + 1] == 0 && data[x, y + 1] == 255)
{
x = x + 0; y = y + 1; list.Add(0); l++;
}
vec = 7;
break;
}
}

A 回答 (1件)

http://homepage2.nifty.com/tsugu/sotuken/binedge/
やりたいことは、↑のようなことでしょうか?

サンプルプログラムの注意点として、switch~caseのFall Through(わざとbreakを置かずに、あるcaseを実行後そのまま次のcaseを実行するようにする)を利用しているので、そのままC#で使えません)コンパイルエラーになります)。
case A: の前の行に goto case A; を入れてください(Aは0,1,...です)

参考URL:http://homepage2.nifty.com/tsugu/sotuken/binedge/
    • good
    • 0
この回答へのお礼

無事解決しました

お礼日時:2010/07/08 08:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!