Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как копировать образ экрана в файл

Delphi , ОС и Железо , Монитор и Экран

Как копировать образ экрана в файл

Автор: Vit
WEB-сайт: http://forum.vingrad.ru

На форме у меня стоит TImage (его можно сделать невидимым)

var
  i: TJPEGImage;
begin
  try
    i := TJPEGImage.create;
    try
      i.CompressionQuality := 100;
      image.Width := screen.width;
      image.height := screen.height;
      DWH := GetDesktopWindow;
      GetWindowRect(DWH, DRect);
      DescDC := GetDeviceContext(DWH);
      Canv.Handle := DescDC;
      DRect.Left := 0;
      DRect.Top := 0;
      DRect.Right := screen.Width;
      DRect.Bottom := screen.Height;
      Image.Canvas.CopyRect(DRect, Canv, DRect);
      i.assign(Image.Picture.Bitmap);
      I.SaveToFile('M:\MyFile.jpg');
    finally
      i.free;
    end;
  except
  end;

Типы использованных переменных:

Dwh : HWND; 
DRect: TRect; 
DescDC: HDC; 
Canv: TCanvas;

Перевод контента на русский язык:

Код, предоставленный ниже, используется для захвата экрана и сохранения его в виде файла изображения формата JPEG. Вот подробное описание того, что каждый раздел кода делает:

  1. Класс TJPEGImage используется для создания нового объекта JPEG-изображения.
  2. Качество сжатия установлено в 100, что означает, что изображение будет сохранено с максимальной качеством.
  3. Объект TImage (image) используется как холст для захвата экрана. Ширина и высота объекта устанавливаются в соответствии с разрешением экрана.
  4. Функция GetDesktopWindow используется для получения handle десктопного окна, которое представляет собой весь экран.
  5. Функция GetWindowRect используется для получения прямоугольника (DRect), который представляет собой позицию и размер десктопного окна на экране.
  6. Функция GetDeviceContext используется для получения контекста устройства (DescDC) для десктопного окна, что позволяет нам рисовать на нем.
  7. Объект TCanvas (Canv) создается с handle контекста устройства. Этот холст будет использоваться для захвата экрана.
  8. Метод CopyRect вызывается на холсте для копирования всего экрана в новый прямоугольник (DRect) на холсте, эффективно захватывая экран.
  9. Захваченное изображение присваивается объекту JPEG-изображения с помощью метода Assign.
  10. Наконец, объект JPEG-изображения сохраняется в файле с именем "MyFile.jpg" на диске M:.

Код использует обработку исключений для обеспечения того, что любые ошибки, возникшие во время выполнения, будут пойманы и обработаны.

Вот альтернативное решение, использующее встроенную функциональность VCL для захвата экрана:

var
  i: TJPEGImage;
begin
  try
    i := TJPEGImage.Create;
    try
      i.CompressionQuality := 100;
      i.Assign(TBitmap.Create.Canvas.CopyFromScreen(0, 0, 0, 0, Screen.Width * Screen.TwipsPerPixelX, Screen.Height * Screen.TwipsPerPixelY));
      i.SaveToFile('M:\MyFile.jpg');
    finally
      i.Free;
    end;
  except
  end;
end;

Код использует метод CopyFromScreen класса TBitmap для захвата экрана и затем присваивает его объекту JPEG-изображения. Этоapproach является проще и более эффективным, чем создание холста и копирование экрана вручную.

В статье описывается способ копирования образа экрана в файл с помощью компонента TImage и различных функций для работы с десктопом, оконными структурами и устройствами ввода/вывода.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Монитор и Экран ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-07-02 03:10:48/0.00337815284729/0