Запутался с подписью CopyFromScreen - PullRequest
0 голосов
/ 31 октября 2010

Я пытаюсь сделать снимок экрана с помощью CopyFromScreen.Однако сигнатура метода меня немного смущает.

Это выглядит так:

public void CopyFromScreen(
    Point upperLeftSource,
    Point upperLeftDestination,
    Size blockRegionSize
)

Почему есть 3 параметра вместо 2?И почему есть оба upperLeftCorner.В моем понимании вы можете описать квадратную область на поверхности, используя две точки (верхний левый угол и нижний правый угол).Это может описать область любого размера и в любой позиции.

Итак, вопрос: как использовать этот метод для захвата области, обозначенной: (X0, Y0) (X1, Y1)?

Ответы [ 2 ]

2 голосов
/ 31 октября 2010

upperLeftDestination - это точка в вашем новом изображении, в которую вы хотите поместить скопированное изображение.

Чтобы скопировать квадрат 50x50 с экрана, начинающегося в верхнем левом углу экрана:

graphics.CopyFromScreen(new Point(0,0), new Point(0, 0), new Size(50, 50));

Чтобы скопировать квадрат 50x50 с экрана, начиная с (100, 100):

graphics.CopyFromScreen(new Point(100, 100), new Point(0, 0), new Size(50, 50));

Чтобы скопировать квадрат 50x50 из верхнего левого угла экрана, скажем, в изображение 60x60 и датьэто ровная граница 5px со всех сторон, которую вы делаете:

graphics.CopyFromScreen(new Point(0, 0), new Point(5, 5), new Size(50, 50));
2 голосов
/ 31 октября 2010

Параметр upperLeftDestination указывает, где на вашем изображении нарисовать копию.
Возможно, вы хотите, чтобы это было 0, 0.

...