Как быстрее получить цвет пикселя на дополнительном мониторе?

Итак, я попытался использовать

bmp.GetPixel(-100, 100);

https://docs.microsoft.com/en-us/windows/desktop/api/gdiplusheaders/nf-gdiplusheaders-bitmap-getpixel

Но, видимо, я не могу использовать для этого отрицательное целое число, выдает ошибку. Тогда я использовал

GetPixel(-100, 100);

https://docs.microsoft.com/en-us/windows/desktop/api/wingdi/nf-wingdi-getpixel

И это сработало, но очень медленно ...

Есть ли у кого-нибудь лучший способ получить цвет пикселя на дополнительном мониторе, где мне нужно использовать отрицательное число для его координаты? Я потратил часы, пытаясь понять это, и я буду очень признателен за любую помощь или другие методы.

Извините, я должен был включить код для скриншота, вот он.

        Bitmap bmp = new Bitmap(SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height);
        Graphics graphics = Graphics.FromImage(bmp as Image);
        graphics.CopyFromScreen(-1920, 0, 0, 1080, bmp.Size);

Я просто хочу сделать снимок экрана второго монитора и сохранить его в растровом изображении, чтобы я мог быстрее искать пиксель.

Вы можете сохранить изображение монитора на Bitmap, а затем использовать .GetPixel() на этом Bitmap.

absoluteAquarian 31.10.2018 14:30
Graphics.CopyFromScreen Метод может быть быстрее.
Johnny Mopp 31.10.2018 14:31

Тау, это то, что я пытался сделать, но когда я указал отрицательную координату для bmp.GetPixel (-100, 100), где bmp - это мой сохраненный дисплей монитора, он выдает исключение, в котором говорится, что это должно быть положительное целое число. Джонни Мопп, я тоже не мог заставить это работать. Дэмиен, я добавил ссылки на него, чтобы, надеюсь, прояснить ситуацию.

ArcticWolf_11 31.10.2018 14:49

Можете ли вы показать нам код, который вы использовали для получения растрового изображения с экрана? Да, координаты экрана будут -100,100, но Bitmap всегда будет относиться к 0,0. Итак, как только вы копируете его в растровое изображение, оно смещается от 0,0.

Jeff R. 31.10.2018 15:12

Я должен был быть более конкретным в своем комментарии. Я все еще говорю, что вы можете сохранить отображение в объекте Bitmap, но затем использовать относительные положительные координаты (x - это ширина экрана - 100, y не меняется).

absoluteAquarian 31.10.2018 17:07

@Damien_The_Unbeliever, хорошо, я не часто использую stackoverflow, поэтому не знал, спасибо.

ArcticWolf_11 31.10.2018 21:02

@JeffR. Добавил код Джефф.

ArcticWolf_11 31.10.2018 21:02

@Tau Также как это будет работать, когда пиксель находится на втором мониторе, где каждая координата X отрицательна?

ArcticWolf_11 31.10.2018 21:03

@ ArcticWolf_11, если вы сохранить изображение экрана и затем сохраните это на Bitmap, то все координаты будут положительными.

absoluteAquarian 01.11.2018 14:03

@Tau А, хорошо, я попробую, спасибо!

ArcticWolf_11 01.11.2018 21:02
0
10
116
0

Другие вопросы по теме