Member 10209926 Ответов: 2

Вопрос о графическом классе В C#


У меня есть этот код для съемки экрана из windows :
Rectangle bounds = Screen.GetBounds(Screen.GetBounds(Point.Empty));
            Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height);
            Graphics g = Graphics.FromImage(bitmap);
            g.CopyFromScreen(Point.Empty, Point.Empty, bounds.Size);

что на самом деле делает последняя строка ?
если я удаляю последнюю строку, растровое изображение становится черным , но последняя строка не работает с растровым изображением !
спасибо, Арман

Что я уже пробовал:

Я уже пробовал это :
TeboScreen: Базовое Приложение Для Захвата Экрана C# [^]

2 Ответов

Рейтинг:
13

phil.o

Вы можете проверить документацию:
Графика.Метод CopyFromScreen[^]
Там говорится, что это

Цитата:
Выполняет битовую блочную передачу цветовых данных с экрана на чертежную поверхность графики.

Поэтому последняя строка действительно что-то делает с растровым изображением, просто вмешиваясь в его основу Graphics объект.
Любезно.


Member 10209926

Спасибо, у меня есть ответ .

phil.o

Пожалуйста :)

Рейтинг:
0

OriginalGriff

Линия:

g.CopyFromScreen(Point.Empty, Point.Empty, bounds.Size);
Копирует текущий экран (или основной экран, если у вас их несколько) и рисует его в растровое изображение: если вы добавите
bitmap.Save(@"D:\Temp\Screen.bmp");
Вы сможете ясно видеть изображение.

Point.Empty это просто стенография для new Point(0, 0) таким образом, он копирует данные из верхней левой части экрана в верхнюю левую часть выходного растрового изображения и bounds.Size говорит, чтобы скопировать весь экран.