Робити скриншоти фрагментів робочого стола – це привична справа, особливо коли є необхідність спілкуватись з кимось і в процесі розмови хочеться показати щось, про що йде власне розмова. Зазвичай я скриншоти роблю програмою FastStone Capture, просто за багато років привик користуватись саме нею. Але інколи є необхідність робити скриншоти автоматично раз в якийсь період часу – і для цього я використовую ZennoPoster.
Ще раз повернусь до самої проблеми, навіщо взагалі автоматизовувати створення скриншотів робочого стола, якщо звичайним людям хватає програм які це роблять в ручному режимі? В моєму випадку інколи хочеться банально знати чим я займався весь день. Для цього просто стоїть шаблон в ZennoPoster який робить скриншоти робочого стола кожних 60 секунд. При бажанні їх можна з’єднати потім через ffmpeg і одержати коротенький відео ролік, в якому буде чітко зрозуміло на що був потрачений час.
В іншому випадку – коли приходиться робити якусь інструкцію. Виставляю наприклад робити скриншоти робочого стола кожних 10 секунд, і в результаті одержую набір скриншотів, з яких потім просто вибираю необхідні. Тобто, це досить зручно і спрощує роботу. Реалізація проєкту дуже проста:
– потрібно вміти зробити скриншот
– потрібно вміти зберегти його
Я навіть відео записував як це робиться у 2019 році.
На першому мова йде про об’єкт Graphics, а в іншому він також використовується для збереження скриншота.
Власне створення скриншота екрана програмою ZennoPoster і збереження його на диску:
Код, який використовується для створення скриншота – в моєму випадку зберігає весь простір робочого стола в директорію поряд з проєктом з розширенням jpg (так менший розмір займає):
string path = Path.Combine(project.Directory, "2023-11-17_160618.jpg"); using(Bitmap bitmap = new Bitmap(1920,1080)){ using(Graphics graphics = Graphics.FromImage(bitmap)){ graphics.CopyFromScreen(0,0,0,0,bitmap.Size); bitmap.Save(path, System.Drawing.Imaging.ImageFormat.Jpeg); // третім параметром треба передавати EncoderParameter якщо використовується маштаб наприклад 150% - про цей параметр треба почитати додатково } }
У відео я не використовував using, хоча два способи можна вважати правильними.