Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
42 / 42 / 17
Регистрация: 25.04.2014
Сообщений: 499

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

12.09.2014, 03:45. Показов 1815. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, решил сделать бота.
Вот кусок кода, в котором после запуска вылетает исключение ArgumentOutOfRangeException:

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

Пишет: "Параметр должен быть положительным и меньше ширины. Имя параметра: x" в строке if (screenPicture.GetPixel(i, j) != Color.FromArgb(255, 0, 0, 0))

Весь день сидел писал, так что сейчас голова просто не варит... Отладчик показывает, что i=500, j=131, не пойму в чем проблема
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.09.2014, 03:45
Ответы с готовыми решениями:

Получение заданной области экрана и цвета пиксела
Здравствуйте! Есть такая задача: 1. В заданной области экрана необходимо отслеживать цвет пикселей. 2. Если цвет хоть одного пикселя...

Исключение ArgumentOutOfRangeException в RemoveAt
Здравствуйте, имеется код private void BTDel_Click(object sender, EventArgs e) { int index =...

Save the humans. Исключение ArgumentOutOfRangeException
Читаю книгу &quot;Изучаем C#&quot; 3-е издание. При запуске игры и нажатии на кнопку Start вылазит окно с ошибкой: &quot; Исключение типа...

3
763 / 270 / 57
Регистрация: 13.12.2009
Сообщений: 1,110
12.09.2014, 05:27
Ошибка ссылается на размер. Он отрицательный и меньше ширины. см рис
Миниатюры
Получение пиксела с экрана и исключение ArgumentOutOfRangeException  
1
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
12.09.2014, 11:16
tapochka, вы создаете Bitmap размером 500х435 и хотите получить пиксель по координатам за пределами битмапа.Верно указывайте границы для цикла:
C#
1
2
3
4
5
6
7
8
9
10
11
12
for (int j = 0; j < 435; j += 3)
                {
                    for (int i = 0; i < 500; i += 3)
                    {
                        if (screenPicture.GetPixel(i, j) != Color.FromArgb(255, 0, 0, 0))
                        {
                            Point ptTarget = new Point(i, j);
                            Cursor.Position = ptTarget;
                            MouseClick();
                        }
                    }
                }
1
42 / 42 / 17
Регистрация: 25.04.2014
Сообщений: 499
13.09.2014, 00:51  [ТС]
Всем спасибо, надо было сделать вот так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
private void Timer_Tick(Object sender, EventArgs e)
        {
            screenPicture = null;
            CountTick+=1;
            if (CountTick < 20)
            {
            //    screenPicture = new Bitmap(500, 435);
                screenPicture = new Bitmap(900, 565);
                using (Graphics g = Graphics.FromImage(screenPicture))
                {
                    g.CopyFromScreen(400, 130, 0, 0, screenPicture.Size);
                }
                Bitmap after = screenPicture; 
                for (int j = 130; j < 565; j += 5)
                {
                    for (int i = 400; i < 900; i += 5)
                    {
                        if (after.GetPixel(i, j) != Color.FromArgb(255, 0, 0, 0))
                        {
                            Point ptTarget = new Point(i, j);
                            Cursor.Position = ptTarget;
                            MouseClick();
                        }
                    }
                }
            }
            else this.Close();
        }
Работает правда все равно ни как я хочу)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.09.2014, 00:51
Помогаю со студенческими работами здесь

Необработанное исключение типа «System.ArgumentOutOfRangeException» произошло в mscorlib.dll
Необработанное исключение типа «System.ArgumentOutOfRangeException» произошло в mscorlib.dll Дополнительные сведения: minValue не может...

Мониторинг определенного пиксела экрана
Можно ли указать координаты точки (на рабочем столе) и если изменится ее цвет то допустим выдать сообщение что изменился цвет.

Получение координат пиксела с изображения
Добрый день! Я начинающий разработчик. Помогите, пожалуйста, решить задачу. Суть такова: На форме открывается изображение....

Получение цвета пиксела загруженного изображения
Как можно открыть картинку в QBasic?Если это возможно, то как узнать в какой цвет окрашен определенный пиксель на этой картинке?)

Получение цвета пиксела под курсором
как я могу получить цвет от клика, в windows forms? Добавлено через 1 час 2 минуты или по координатам?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru