WEB开发网
开发学院软件开发Delphi Delphi图象截取编程示例(4) 阅读

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

 2006-02-04 13:53:24 来源:WEB开发网   
核心提示: (六)TMainForm的 (抓图)Action 事件1)全屏抓图[Capture Desktop] Action 事件PRocedure TMainForm.cptDesktopExecute(Sender: TObject);begin inc(CaptureNum,1); application.Mini
 

(六)TMainForm的 (抓图)Action 事件
1)全屏抓图
[Capture Desktop]  Action 事件
PRocedure TMainForm.cptDesktopExecute(Sender: TObject);
begin
  inc(CaptureNum,1);
  application.Minimize ;  //窗体最小化
  Delay(500);       //最小化后延时,为了全屏抓图不把自身抓进图中
  FileName:='Capture'+IntToStr(CaptureNum)+'.bmp';
  FileName:=DefaultDirectory+FileName;
  CreateMDIChild(FileName,true);
  StatusBar.SimpleText := FileName;
  with ActiveMDIChild as TMDIChild do begin
   Image1.Picture.Bitmap := CaptureScreen;     //抓图
   HorzScrollBar.Range := Image1.Picture.Width;
   VertScrollBar.Range := Image1.Picture.Height;
  end;
  Child.Image1.Hint := 'Height:'+intToStr(child.Image1.Picture.Height)+'pixels'
           + ' Width:'+intToStr(child.Image1.Picture.Width)+'pixels';
  application.Restore ;
end;

2)区域抓图
  抓取区域图片,即要用到一个新的Form1,参见《Delphi图象截取编程示例(6)》  .
  在Main单元implementation的uses中添加Capture1。
  在Main单元添加私有过程CaptureArea :

procedure TMainForm.CaptureArea;
begin
  with TForm1.Create(Application) do
  try
   if ShowModal=mrOK then
   with fRect do begin
    if (Right>Left)and(Bottom>Top) then begin
     Delay(400);
     ABitmap:=TBitmap.Create;
     ABitmap.Assign(CaptureScreenRect(fRect));
     Child.Image1.Picture.Bitmap:=ABitmap;
     Child.ClientWidth := Child.Image1.Picture.Width ;
     Child.ClientHeight:= Child.Image1.Picture.Height;
     Child.HorzScrollBar.Range:=Child.Image1.Picture.Width ;
     Child.VertScrollBar.Range:=Child.Image1.Picture.Height;
     ABitmap.Free ;
    end else begin
     MessageDlg('选择图片区域错误,请重新选择!',mtInformation,[mbOK],0);
     Child.Close ;
     Form1.Free ;
     exit;
    end;
   end;
  finally
   Free;
  end;
end;

[Capture Area]区域抓图的Action 事件
procedure TMainForm.cptAreaExecute(Sender: TObject);
begin
  Inc(CaptureNum,1);
  Application.Minimize ;
  Delay(500);
  FileName:='Capture'+IntToStr(CaptureNum)+'.bmp';
  FileName:=DefaultDirectory+FileName;
  { Create MDI Child Window }
  CreateMDIChild(FileName,true);
  StatusBar.SimpleText := FileName;

  { Capture Area of screen }
  CaptureArea;
  Child.Image1.Hint := 'Height:'+intToStr(child.Image1.Picture.Height)+'pixels'
           + ' Width:'+intToStr(child.Image1.Picture.Width)+'pixels';
  application.Restore ;
end;

Tags:Delphi 图象 截取

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接