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