2016-02-14 2 views
1

Я пытаюсь написать кусок кода, чтобы создать черный растровое изображениеBitmap манипуляции метания System.ArgumentOutOfRangeException

Bitmap rectangle = new Bitmap(100, 100); 
for (int i = 1; i <= rectangle.Width - 1; i++) 
    for (int j = 1; i <= rectangle.Height - 1; j++) 
     rectangle.SetPixel(i, j, Color.Black); 

Но он продолжает бросать System.ArgumentOutOfRangeException.

+0

Вы пробовали вот так? 'i <100' вместо' i <= rectangle.Width - 1' –

+2

C# использует индексирование на основе нуля, поэтому ваши циклы должны начинаться с нуля, а не с нуля. Обратите внимание, что это не причина, по которой она выбрасывает исключение. Я просто говорю, что вы пропускаете первые значения i и j. – Trauer

+0

Я пробовал оба, т. Е. (Int i = 0; i <100; i ++), но это не решило проблему. –

ответ

1
Bitmap rectangle = new Bitmap(100, 100); 
for (int i = 1; i <= rectangle.Width - 1; i++) 
    for (int j = 1; i <= rectangle.Height - 1; j++) 
     rectangle.SetPixel(i, j, Color.Black); 

Проблема в состоянии останавливая вашей второй петли в:

i <= rectangle.Height - 1 

должен быть

j <= rectangle.Height - 1 

я теперь это не «просмотр кода» вопрос, но вот предложение : избегать использования magic numbers Мы можем сделать это, просто удалив -1 и используя < вместо <=.

Bitmap rectangle = new Bitmap(100, 100); 
for (int i = 0; i < rectangle.Width; i++) 
    for (int j = 0; j < rectangle.Height; j++) 
     rectangle.SetPixel(i, j, Color.Black); 
+0

Спасибо, это была глупая ошибка –

+0

Не глупо. Это просто отсутствие внимания. Я делаю это все время, когда устаю и пытаюсь закодировать. – Trauer

Смежные вопросы