Получение пиксела с экрана и исключение ArgumentOutOfRangeException - C#
Формулировка задачи:
Здравствуйте, решил сделать бота.
Вот кусок кода, в котором после запуска вылетает исключение ArgumentOutOfRangeException:
Пишет: "Параметр должен быть положительным и меньше ширины. Имя параметра: x" в строке if (screenPicture.GetPixel(i, j) != Color.FromArgb(255, 0, 0, 0))
Весь день сидел писал, так что сейчас голова просто не варит... Отладчик показывает, что i=500, j=131, не пойму в чем проблема
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();
}Решение задачи: «Получение пиксела с экрана и исключение ArgumentOutOfRangeException»
textual
Листинг программы
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();
}