"Delphi. Учимся на примерах" - читать интересную книгу автора (Парижский Сергей Михайлович)

Разработка программного кода

Для начала объявим все переменные, которыми будем пользоваться в программе:

var

 Form1: TForm1; //главная форма

 ВМР1 :Graphics.ТВitmap; //для работы с рисунками (*.bmp)

 DC1: HDC;//простое поле для графики

 Image1:TImage;

Самое главное событие в программе — это нажатие кнопки Сделать снимок экрана. Создадим обработчик этого события:

procedure TForm1.Button1Click(Sender: TObject);

begin

 Form1.Visible := False;//прячем форму

 Sleep(15); //пауза 15 мс

 BMP1:= Graphics.TBitmap.Create;

 //задаем размеры рисунка такие же как размеры экрана

 ВМР1.Height:= Screen.Height;

 ВМР1.Width:= Screen.Width;

 DC1:=GetDC(0);

 //Делаем копию экрана

 BitBlt(BMP1.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, DC1, 0, 0, SRCCOPY);

 Form1.Visible:= True;//восстанавливаем окно программы

 Image1:= TImage.Create(nil);

 BMP1.IgnorePalette:= True;

 Image1.Picture.Assign(BMP1);

 ВМР1.SaveToFile('с:\1.bmp'); //сохраняем снимок в файл 1.bmp на диске С:\

end;

Перед тем как сделать снимок экрана, мы прячем окно программы, делаем паузу в 15 мс и задаем размеры будущего рисунка. После этого делаем снимок экрана и сохраняем его в файл 1.bmp, который находится на диске C:\.

По нажатию кнопки Показать рисунок выполняем следующий код:

procedure TForm1.Button4Click(Sender: TObject);

begin

 Screen1.Show; // делаем рисунок видимым

 if FileExists('с:\1.bmp') then //если рисунок существует,

  Screen1.Picture.LoadFromFile('c:\1.bmp'); //загружаем его

end;

По нажатию кнопки Очистить мы должны скрывать рисунок и удалять его с диска:

procedure TForm1.Button3Click(sender: TObject);

begin

 //удаляем рисунок с диска

 if FileExists('с:\1.bmp') then DeleteFile('С:\1.bmp');

 Screen1.Hide; //скрываем рисунок

end;

Для сохранения рисунка будем использовать диалоговое окно. Код нажатия кнопки Сохранить:

procedure TForm1.Button2Click(Sender: TObject);

begin

 if SaveDialog1.Execute then

  BMP1.SaveToFile(SaveDialog1.FileName)//сохраняем рисунок

 else ShowMessage('Файл не был сохранен!');

end;

Здесь мы проверяем, выбрал ли пользователь место сохранения файла. Если да, то сохраняем рисунок по указанному расположению.

Откомпилируем и запустим программу на выполнение (результат — на рис. 4.2).

Рис. 4.2. Программа ScreenShot в действии