Содержание материала

В качестве параметров передаются:

AHandle - хэндл окна, скриншот которого мы хочем получить

CompressPercent - процент сжатия картинки

AImage - картинка, в которую будет помещено изображение

в случае успешного скриншота функция вернет True  {©Drkb v.3}

 

 

Code:

 

function GetScreenShot(const AHandle: THandle; const CompressPercent: Byte;

var AImage: TJPEGImage): Boolean;

var

fBitmap: TBitmap;

DC: HDC;

Rect: TRect;

begin

Result := False;

if AImage = nil then Exit;

DC := GetDC(AHandle);

if DC <> 0 then

try

   fBitmap := TBitmap.Create;

   try

     if not GetClientRect(AHandle, Rect) then Exit;

     fBitmap.Width := Rect.Right - Rect.Left;

     fBitmap.Height := Rect.Bottom - Rect.Top;

     fBitmap.PixelFormat := pf32bit;

     Result := BitBlt(fBitmap.Canvas.Handle, 0, 0, fBitmap.Width,

       fBitmap.Height, DC, 0, 0, SRCCOPY);

     if not Result then Exit;

     AImage.Assign(fBitmap);

     AImage.CompressionQuality := CompressPercent;

   finally

     fBitmap.Free;

   end;

finally

   ReleaseDC(AHandle, DC);

end;

end;

 

// Пример использования...

procedure TForm1.Button1Click(Sender: TObject);

var

Image: TJPEGImage;

begin

// Скриншот рабочего стола

Image := TJPEGImage.Create;

try

   if GetScreenShot(GetDesktopWindow, 150, Image) then

     Image1.Picture.Assign(Image);

finally

   Image.Free;

end;

// Скриншот нашей формы

Image := TJPEGImage.Create;

try

   if GetScreenShot(Handle, 150, Image) then

     Image2.Picture.Assign(Image);

finally

   Image.Free;

end;

end;

 Автор Rouse_

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить