Получение пиксела с экрана и исключение ArgumentOutOfRangeException - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, решил сделать бота. Вот кусок кода, в котором после запуска вылетает исключение ArgumentOutOfRangeException:
Листинг программы
  1. private void Timer_Tick(Object sender, EventArgs e)
  2. {
  3. screenPicture = null;
  4. CountTick+=1;
  5. if (CountTick < 40)
  6. {
  7. screenPicture = new Bitmap(500, 435);
  8. using (Graphics g = Graphics.FromImage(screenPicture))
  9. {
  10. g.CopyFromScreen(400, 130, 0, 0, screenPicture.Size);
  11. }
  12. Bitmap after = screenPicture;
  13. for (int j = 131; j < 565; j += 3)
  14. {
  15. for (int i = 401; i < 900; i += 3)
  16. {
  17. if (screenPicture.GetPixel(i, j) != Color.FromArgb(255, 0, 0, 0))
  18. {
  19. Point ptTarget = new Point(i, j);
  20. Cursor.Position = ptTarget;
  21. MouseClick();
  22. }
  23. }
  24. }
  25. }
  26. else this.Close();
  27. }
Пишет: "Параметр должен быть положительным и меньше ширины. Имя параметра: x" в строке if (screenPicture.GetPixel(i, j) != Color.FromArgb(255, 0, 0, 0)) Весь день сидел писал, так что сейчас голова просто не варит... Отладчик показывает, что i=500, j=131, не пойму в чем проблема

Решение задачи: «Получение пиксела с экрана и исключение ArgumentOutOfRangeException»

textual
Листинг программы
  1. private void Timer_Tick(Object sender, EventArgs e)
  2.         {
  3.             screenPicture = null;
  4.             CountTick+=1;
  5.             if (CountTick < 20)
  6.             {
  7.             //    screenPicture = new Bitmap(500, 435);
  8.                 screenPicture = new Bitmap(900, 565);
  9.                 using (Graphics g = Graphics.FromImage(screenPicture))
  10.                 {
  11.                     g.CopyFromScreen(400, 130, 0, 0, screenPicture.Size);
  12.                 }
  13.                 Bitmap after = screenPicture;
  14.                 for (int j = 130; j < 565; j += 5)
  15.                 {
  16.                     for (int i = 400; i < 900; i += 5)
  17.                     {
  18.                         if (after.GetPixel(i, j) != Color.FromArgb(255, 0, 0, 0))
  19.                         {
  20.                             Point ptTarget = new Point(i, j);
  21.                             Cursor.Position = ptTarget;
  22.                             MouseClick();
  23.                         }
  24.                     }
  25.                 }
  26.             }
  27.             else this.Close();
  28.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы