Урок 37 - Запись рабочего стола
В этом уроке мы будем делать снимки экрана.
Нам понадобится: 2 Edit, 3 Ladel, Image и Button кидаем все это на форму и располагаем так:
Размер снимка будет напрямую зависеть от размеров компонента Image, сделаем размер равный разрешению моего монитора (1280х1024), то есть свойство Width = 1280, а Heigth = 1024. Появились полосы прокрутки, их нам не надо, в раскрывающемся свойстве VertSrollBar и HorzSrollBar свойство Visible установим на false.
В Delphi вся работа с графикой основывается на понятии класса TCanvas и понятии холста, сейчас мы с этим классом и будем работать, создаем обработчик события OnClick на Button1 и пишем код:
procedure TForm1.Button1Click(Sender: TObject); var Canvas: TCanvas; ScreenV: HDC; begin ScreenV:= GetDC(0); Canvas:= TCanvas.Create; Canvas.Handle:= ScreenV; Image1.Canvas.CopyRect(Rect(0, 0, Image1.Width, Image1.Height), Canvas, Rect(0, 0, Screen.Width, Screen.Height)); ReleaseDC(0, ScreenV); end;Проверим как это работает:
Все отлично, теперь сохраним полученное, модифицировав код создания снимка, просто допишем код:
procedure TForm1.Button1Click(Sender: TObject); var Canvas: TCanvas; ScreenV: HDC; begin ... Image1.Picture.SaveToFile(Edit1.Text + Edit2.Text); //сохраняем end;Вот зачем нам были нужны Edit'ы, в первый пишем например "foto", а во второй ".jpg", и в папке с программой появляется наш снимок экрана, не забудьте сохранить программу!
Перейдем к самому интересному, мульти-сьемка. В этом нет ничего сложного, надо просто через равные промежутки времени нажимать на Button1, с этой задачей справится таймер. Вытащим его на форму и создадим глобальную переменную i: integer;, в обработчике события OnTimer пишем код:
procedure TForm1.Timer1Timer(Sender: TObject); begin i:=i+1; Button1.Click; //делаем снимок end;Если мы сейчас запусти программу, то она будет делать снимки с интервалом в 1 сек. и сохранять все это в один файл, т.е. переписывать его, избавиться от этого нам поможет переменная "i", дополним процедуру создания снимка:
procedure TForm1.Button1Click(Sender: TObject); var Canvas: TCanvas; ScreenV: HDC; begin ... Image1.Picture.SaveToFile(Edit1.Text + IntToStr(i) + Edit2.Text); //сохраняем end;Таким образом при каждом снимке имя файла будет: foto1.jpg, foto2.jpg, foto3.jpg и т.д. Сразу изменим свойства Text первого Edit'а на "foto", а второго на ".jpg". После запуска времени чтоб это написать на не хватит и программа будет сохранять файлы с неправильными именами.
Вот что получилось:
Ну вот и все, в следующем уроке мы приведём программу в божеский вид :)
Удачи!
Встретимся в следующем уроке!
Добавил(а): nurbeksoft | Дата: 2013-05-14 | |
|
No results found.