Delphi ScreenCap 截图


本文整理自网络,侵删。

 
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, jpeg;

type
  TForm1 = class(TForm)
    btnScreenCap: TButton;
    procedure ScreenCap(LeftPos, TopPos, RightPos, BottomPos: integer);
    procedure btnScreenCapClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnScreenCapClick(Sender: TObject);
begin
  ScreenCap(1, 1, 500, 500);
end;

procedure TForm1.ScreenCap(LeftPos, TopPos, RightPos, BottomPos: integer);
var
  RectWidth, RectHeight: integer;
  SourceDC, DestDC, Bhandle: integer;
  Bitmap: TBitmap;
  MyJpeg: TJpegImage;
  Stream: TMemoryStream;
begin
  MyJpeg := TJpegImage.Create;
  RectWidth := RightPos - LeftPos;
  RectHeight := BottomPos - TopPos;
  SourceDC := CreateDC('DISPLAY', '', '', nil);
  DestDC := CreateCompatibleDC(SourceDC);
  Bhandle := CreateCompatibleBitmap(SourceDC, RectWidth, RectHeight);
  SelectObject(DestDC, Bhandle);
  BitBlt(DestDC, 0, 0, RectWidth, RectHeight, SourceDC, LeftPos,
    TopPos, SRCCOPY);
  Bitmap := TBitmap.Create;
  Bitmap.Handle := Bhandle;
  Stream := TMemoryStream.Create;
  Bitmap.SaveToStream(Stream);
  Stream.Free;
  try
    MyJpeg.Assign(Bitmap);
    MyJpeg.CompressionQuality := 100;
    MyJpeg.Compress;
    MyJpeg.SaveToFile('d:\MyJPEGImage.JPG');
  finally
    MyJpeg.Free;
    Bitmap.Free;
    DeleteDC(DestDC);
    ReleaseDC(Bhandle, SourceDC);
  end;
end;

end.

相关阅读 >>

Delphi 获取文件大小方法

Delphi 检测程序有没有被dll注入的代码

使用rad studio为安卓内置的java库

Delphi 单击按钮左键弹起菜单

Delphi debug release区别是什么?

Delphi与用windows 7下的用户账户控制(uac)机制

Delphi获取系统当前进程名和进程id

Delphi中tlistview控件使用

Delphi android 程序名称在哪里设置?

Delphi webbrowser控件属性介绍

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...