(六)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;

|