2017-12-28 28 views
-2

が、私は以下のようにビットマップ画像から抽出された画素の配列を持っている「私のコードでは、」配列の境界外でした私のイメージの特定のピクセルのいくつか。解決するためにどのようにインデックスが

私は何をしようとしていることは、ユーザーからいくつかの整数番号を取得し、ユーザーが右の最初の整数を入力した後に入ることASCII値でレッド値にArray_of_Pixels[input_number]を変更しようとしています。緑と青の値は以前と同じになります。私は、ユーザによって入力された整数値と右側それぞれArray_of_InputsInput_ASCII_Valuesと命名された2つの別々のアレイ内の各整数の後に入力されたASCII値を格納

注意。

Array_of_Pixelsの長さがNであるが入力の長さは、ユーザが1からNに変化させることができる入ること値。

は私が上記のものを行うには、以下のようなループためを使用している(これは、そのNより大きくすることはできません):

for (int i = 0; i < Array_of_Inputs.Length; i++) 
{ 
Array_of_Pixels[Array_of_Inputs[i]] = Color.FromArgb(Input_ASCII_Values[i], Array_of_Pixels[Array_of_Inputs[i]].G, Array_of_Pixels[Array_of_Inputs[i]].B); 
} 

をしかし、私の問題は、次のとおりです。いつか、それはいくつかのケースでは、完璧に動作しますが、私はインデックスが配列の境界外になったエラーが発生します。

私はArray_of_Inputs.LengthまたはInput_ASCII_Values.Lengthのサイズが大きくなっているArray_of_Pixels.Lengthかを取得するかどうかを確認するためにブレークポイントを使用しました。そして答えは彼らがしないことです。

この問題は、入力の長さが大きい場合(ほとんどArray_of_Pixels.Lengthに近い)に発生しますが、これは毎回繰り返されません。

ここで何が間違っているのか教えていただけますか?ここで

は、エラーの原因となった入力の例である:あなたのコードはArray_of_Inputsで第16回インデックスではI = 16で、あなたの供給入力で破った

Array_of_Inputs = {0,5,10,15,20,25,3,8,13,18,23,1,6,11,16,21,26,4,9,14,19,24,2,7,12,17} 

Input_ASCII_Values = {105,117,121,103,100,104,107,106,100,100,97,98,103,100,97,119,100,121,117,119,101,103,100,102,101,102} 
+0

入力する数値はすべてArray_of_Pixels.Lengthより小さいか等しいですか? – parisa

+1

@parisaもちろん、毎回チェックします。質問をもっと短くするために言及しなかっただけです。 :-) –

+1

int length = Input_ASCII_Values.Length jdweng

答えて

2

、値はあなたが使用している26ですこの値はピクセルをインデックス化し、ピクセル配列は26個の要素しか持たない。入力は最大でn-1までです。あなたの例ではNは26ですので、最大値は25です。

+0

時には心停止、私はこの状況にあったときに私を助けます:-)ありがとう –

関連する問題