Урок 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.
Отменить.