转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
Delphi图象截取编程示例(8)         ★★★★

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:587 更新时间:2009/4/23 18:30:32

(七)抓取图标(ICON)的窗体
创建一个新的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;

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

end.


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台