2017-12-28 8 views
-2

제가 아래처럼 비트 맵 이미지에서 추출한 화소의 배열을 "내 코드"배열의 범위를 벗어난 내 이미지의 특정 픽셀 중 일부. 나는 사용자의 일부 정수 번호를 받고 수행하고 사용자가 바로 첫 번째 정수를 입력 한 후 입력하는 ASCII 값으로 레드 값을 Array_of_Pixels[input_number]을 변경하려고 노력하고있어해결하는 방법 지수

. 녹색 및 파랑 값은 이전과 동일하게 유지됩니다. I는 사용자가 입력 한 정수 값 및 우측 각각 Array_of_Inputs 및 Input_ASCII_Values ​​ 명명 된 두 개의 어레이의 각 정수 후 입력 된 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 = {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 길이 = Input_ASCII_Values.Length jdweng

답변

2

귀하의 코드가 Array_of_Inputs에서 16 인덱스 = 나는 귀하의 입력 값 (16)을 돌파을, 값은 당신이 사용하고있는 26입니다 픽셀을 인덱싱하는이 값과 픽셀 배열에는 26 개의 요소 만 있습니다. 입력은 최대 n-1까지만 가능합니다. 귀하의 예제에서 N은 26이므로 최대 값은 25입니다.

+0

때때로 마음이 멈추고, 내가이 상황에있을 때 나를 도왔습니다 .--) 감사합니다. –