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

WX18003260861

WX18003260861

2016-02-19 14:19

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的Delphi图象截取编程示例(8),过去的都会过去,迎接崭新的开始,释放更美好的自己。
 

  
  创建一个新的Form3,保存为Capture3.pas。设置属性BorderIcons的四个属性为false.
  BorderStyle设为bsNone,FormStyle设为fsStayOnTop.
  一个私有变量:fDragging:Boolean; 两个公共变量:fRect:TRect,fBmp:TBitmap;

  unit Capture3;

  interface

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

  type
    TForm3 = class(TForm)
      procedure FormCreate(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);
      procedure FormActivate(Sender: TObject);
      procedure FormDestroy(Sender: TObject);
      procedure FormPaint(Sender: TObject);
    private
      fDragging:Boolean;
    public
      fRect:TRect;
      fBmp:TBitmap;
    end;

  var
    Form3: TForm3;

  implementation

  {$R *.dfm}

  //创建一个新的自定义光标CURSOR_2,放在Capture3.res资源
  //文件中.是32*32的白色矩形边框,用来指示抓图的范围.

  procedure TForm3.FormCreate(Sender: TObject);
  var aDC:HDC ;
  const crBox = -19;
  begin
    Screen.Cursors[crBox]:=LoadCursor(hInstance,'CURSOR_2');
    Cursor := crBox;
    fBmp := TBitmap.Create ;
    fBmp.Width := Screen.Width ;
    fBmp.Height:= Screen.Height;
    aDC := GetDC(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 TForm3.FormMouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
  begin
    if mbLeft = Button then begin
      fDragging := true;
      SetRect(fRect,X,Y,X+32,Y+32);
      Canvas.DrawFocusRect(fRect);
    end;
  end;

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

  procedure TForm3.FormMouseUp(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
  begin
    ModalResult:=mrOK;
  end;

  procedure TForm3.FormActivate(Sender: TObject);
  const crHand=-18;
  begin
    Screen.Cursors[crHand]:=LoadCursor(hInstance,pChar('CURSOR_1'));
    Cursor:=crHand;
  end;

  procedure TForm3.FormDestroy(Sender: TObject);
  begin
    fBmp.Free;
    Screen.Cursor := crDefault;
  end;

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

  procedure TForm3.FormPaint(Sender: TObject);
  begin
    Canvas.Draw(0,0,fBmp);
  end;

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

  end.

展开更多 50%)
分享

猜你喜欢

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

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

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

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

s8lol主宰符文怎么配

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

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

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

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

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

lol偷钱流符文搭配推荐

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

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

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

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

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

lolAD刺客新符文搭配推荐

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

CSS常用信息速查手册

CSS常用信息速查手册

jQuery 数据缓存data(name, value)详解及实现

jQuery 数据缓存data(name, value)详解及实现
下拉加载更多内容 ↓