Delphi图象截取编程示例(6)

cangqxnen74

cangqxnen74

2016-02-19 14:19

下面,图老师小编带您去了解一下Delphi图象截取编程示例(6),生活就是不断的发现新事物,get新技能~
 

  
  创建一个新的Form1,保存为Capture1.pas。设置属性BorderIcons的四个属性为false.
  BorderStyle设为bsNone,Cursor设为crCross,FormStyle设为fsStayOnTop.
  添加一个私有变量:fDragging:Boolean;两个公共变量:fRect:TRect,fBmp:TBitmap;
  Form1的作用:在区域抓图时创建,抓图后消失.

  unit Capture1;

  interface

  uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs;

  type
    TForm1 = class(TForm)
      procedure FormCreate(Sender: TObject);
      procedure FormDestroy(Sender: TObject);
      procedure FormPaint(Sender: TObject);
      procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
        Shift: TShiftState; X, Y: Integer);
      procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
        Y: Integer);
      procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
        Shift: TShiftState; X, Y: Integer);
    private
      fDragging:Boolean;
    public
      fRect:TRect;
      fBmp:TBitmap;
    end;

  var
    Form1: TForm1;

  implementation

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  {$R *.dfm}

  procedure TForm1.FormCreate(Sender: TObject);
  var aDC:HDC;  //设备描述表的句柄
  
begin
    fBmp := TBitmap.Create ;
    fBmp.Width := Screen.Width ;
    fBmp.Height:= Screen.Height;
    aDC := GetDC(0); //获取一个窗口的设备描述表的句柄,0参数返回屏幕窗口设备描述表的句柄
  
  BitBlt(fBmp.Canvas.Handle,0,0,Screen.Width,Screen.Height,aDC,0,0,srcCopy);
    ReleaseDC(0,aDC,);
    SetBounds(0,0,Screen.Width,Screen.Height);
  end;

  procedure TForm1.FormDestroy(Sender: TObject);
  begin
    fBmp.Free ;
  end;

  procedure TForm1.FormPaint(Sender: TObject);
  begin
    Canvas.Draw(0,0,fBmp);  //将图形绘制到 Canvas
  end;

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  //如果按下鼠标左键,用SetRect设置矩形fRect,使其只是一个点。
  //用 DrawFocusRect 把这个矩形画出来
  
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
  begin
    if Button=mbLeft then begin
      fDragging:=true;
      SetRect(fRect,x,y,x,y);
      Canvas.DrawFocusRect(fRect);
    end;
  end;

  //鼠标移动时, 判断是否在画图中(按下鼠标左键),DrawFocusRect重新设置矩形
  //使右下角为当前鼠标位置,在调用DrawFocusRect画出矩形

  procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
    Y: Integer);
  begin
    if fDragging then begin
      Canvas.DrawFocusRect(fRect);
      fRect.Right := X ;
      fRect.Bottom:= Y ;
      Canvas.DrawFocusRect(fRect);
    end;
  end;

  //判断是否在画图中(按下鼠标左键),鼠标弹起时,
  //DrawFocusRect重新设置矩形  .关闭窗体

  procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
  begin
    if fDragging then begin
      Canvas.DrawFocusRect(fRect);
      fDragging:=false;
    end;
    ModalResult:=mrOK;   //关闭窗体
  end;

  end.

展开更多 50%)
分享

猜你喜欢

Delphi图象截取编程示例(6)

编程语言 网络编程
Delphi图象截取编程示例(6)

Delphi图象截取编程示例(3)

编程语言 网络编程
Delphi图象截取编程示例(3)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Delphi图象截取编程示例(7)

编程语言 网络编程
Delphi图象截取编程示例(7)

Delphi图象截取编程示例(1)

编程语言 网络编程
Delphi图象截取编程示例(1)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Delphi图象截取编程示例(2)

编程语言 网络编程
Delphi图象截取编程示例(2)

Delphi图象截取编程示例(8)

编程语言 网络编程
Delphi图象截取编程示例(8)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

CSS语法

CSS语法

VB图像处理之图像的色彩纠正

VB图像处理之图像的色彩纠正
下拉加载更多内容 ↓