Документация гласит: Graphics.CopyFromScreen(Int32, Int32, Int32, Int32, Size)
: выполняет битовую передачу цветовых данных, соответствующих прямоугольнику пикселей, с экрана на поверхность рисования Графика. "Но виртуальный экран не обязательно является прямоугольником: представьте себе два монитора с разрешением 1920x1200 и 1280x1024. Поэтому вам нужно создать растровое изображение, как вы, затем перечислить свои мониторы и выполнить CopyFromScreen()
для каждого из них.
Редактировать: Если, например, у вас есть два монитора, один с разрешением 1280x1024, стоящий на слева 1920x1200, тогда координаты первого будут (- 1280,0) - (0, 1024). Поэтому вам нужно выполнить memoryGraphics.CopyFromScreen(-1280, 0, 0, 0, s);
, где s - это Size(1280,1024)
. Для второго вам нужно позвонить memoryGraphics.CopyFromScreen(0, 0, *1280*, 0, s);
, а s будет Size(1920, 1200)
.
Надеюсь, это поможет.