Урок 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


  1. Dohorprok
    Dohorprok 7 months ago
    Discount Pharmacy From Canada Inimeneidigh [url=https://bansocialism.com/]brand cialis online[/url] diunny Sexulay Trasmited Infections Treated W3ith Keflex
  2. 1ольшое количество парней и девушек ищут магаз, где можно найти крутые UGG. Увы, далеко не всегда в ТЦ есть шанс подобрать из оригинальных материалов обувь для зимы. Если у вас есть желание заказать женские или мужские UGG, модные, которые прикольные и вы
    1ольшое количество парней и девушек ищут магаз, где можно найти крутые UGG. Увы, далеко не всегда в ТЦ есть шанс подобрать из оригинальных материалов обувь для зимы. Если у вас есть желание заказать женские или мужские UGG, модные, которые прикольные и вы 5 months ago
    1
  3. Dohorprok
    Dohorprok 4 months ago
    [url=http://gcialisk.com/]cialis generic name[/url]
  4. Dohorprok
    Dohorprok 3 months ago
    <a href="https://ponlinecialisk.com/">cialis online without[/url]</a>
Отменить.