В качестве параметров передаются:
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_
- Назад
- Вперёд >>
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!