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

Копирование экрана 2

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

Копирование экрана 2


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

// Копирование произвольной прямоугольной области экрана
Function CaptureScreenRect( ARect: TRect ): TBitmap;
var
  ScreenDC: HDC;
begin
  Result := TBitmap.Create;
  with Result, ARect do
  begin
    Width := Right - Left;
    Height := Bottom - Top;

    // получаем для экрана контекст устройства
    ScreenDC := GetDC( 0 );
    try
      // копируем оттуда прямоугольную область на канву
      // растрового изображения
      BitBlt( Canvas.Handle, 0, 0, Width, Height, ScreenDC,
        Left, Top, SRCCOPY );
    finally
      ReleaseDC( 0, ScreenDC );
    end;
  end;
end;

// Таким образом, задавая нужный прямоугольник, можно получить
// изображение любой части экрана, получить изображение любого
// элемента формы(кнопок , выпадающих списков и так далее).

// Пример для копирования нужного элемента формы или всей формы,
// включая и заголовок и рамку:
Function CaptureControlImage( Control: TControl ): TBitmap;
begin
  with Control do
    IF Parent = nil Then
      Result := CaptureScreenRect( Bounds( Left, Top, Width,Height ))
    Else
    With Parent.ClientToScreen( Point( Left, Top )) DO
      Result := CaptureScreenRect( Bounds( X, Y, Width,Height ));
end;


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

Код-набор на языке программирования Delphi демонстрирует, как поймать прямоугольную область экрана или конкретный элемент формы и сохранить ее в виде изображения. Функция CaptureScreenRect принимает объект TRect в качестве входного параметра, который определяет координаты верхнего левого и нижнего правого углов области для поймания. Функция возвращает объект TBitmap, представляющий пойманное изображение.

Разбор кода:

  1. Функция CaptureScreenRect создает новый объект TBitmap и инициализирует его указанным прямоугольником.
  2. Она получает контекст устройства (DC) для экрана с помощью функции GetDC, которая возвращает.handle к DC.
  3. Она копирует указанную прямоугольную область из DC экрана на канвас битмапа с помощью функции BitBlt. Константа SRCCOPY используется для указания, что источник и целевой прямоугольники должны быть скопированы точьно.
  4. Наконец, она освобождает.handle DC с помощью функции ReleaseDC.

Функция CaptureControlImage - это обертка вокруг CaptureScreenRect, которая принимает объект TControl в качестве входного параметра (например, кнопку или комбо-бокс). Она проверяет, является ли родительский элемент nil, что означает, что контрол не содержится в другом контроле. Если это так, она вызывает CaptureScreenRect с координатами контрола. В противном случае она использует метод ClientToScreen для преобразования координат контрола из клиентского пространства в экранный и затем вызывает CaptureScreenRect с конвертированными координатами.

Этот код может использоваться для поймания изображений различных частей экрана или конкретных элементов формы, что может быть полезно для задач, таких как скриншотирование или обработка изображений.

Альтернативное решение - использовать функции Windows API, такие как GetDC и BitBlt, напрямую без создания обертки-функции. Например:

function CaptureScreenRect(ARect: TRect): TBitmap;
var
  ScreenDC: HDC;
begin
  Result := TBitmap.Create;
  with Result, ARect do
  begin
    Width := Right - Left;
    Height := Bottom - Top;

    ScreenDC := GetDC(0);
    try
      BitBlt(Canvas.Handle, 0, 0, Width, Height, ScreenDC,
        Left, Top, SRCCOPY);
    finally
      ReleaseDC(0, ScreenDC);
    end;
  end;
end;

Также можно использовать компонент TScreenCapture из VCL, который предоставляет простой способ поймать экран.

Копирование экрана или отдельных элементов форм в программе на Delphi выполняется с помощью метода GetFormImage для копирования изображения из клиентской части формы и функций GDI для копирования произвольной прямоугольной области экрана.


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 13:18:21/0.0059530735015869/1