Delphi经典实例4------区域抓取和屏幕抓取

1.区域抓取:

如下图所示建立工程:

代码如下:

 

2.屏幕抓取:

如下所示建立工程:

代码如下:

  

var intPos,intX,intY: longint; begin intPos := message.lParam; intX := Trunc(intPos/10000); intY := (intPos mod 10000); if not CutRange.MouseIsDown then begin if not ((intX>Left) and (intX<Left+47) and (intY>Top) and (intY<Top+Height)) then begin MoveWindow(CutRangeFormHan,intX,intY,1,1,True); end; end; case CurAction of alCut: //篒礶 begin if message.WParam = WM_LBUTTONDOWN then begin CutRange.StartPoint.X := intX; CutRange.StartPoint.Y := intY; CutRange.MouseIsDown := True; end else if message.WParam = WM_LBUTTONUP then begin SendMessage(CutRangeFormHan,WM_CLOSE,0,0); CutRangeFormHan := 0; uUnWinHook; CutRange.EndPoint.X := intX; CutRange.EndPoint.Y := intY; btnCut.Down := False; CutRange.MouseIsDown := False; CurAction := alNone; uCutScreenToClipboard(CutRange); end; if CutRange.MouseIsDown then begin uDrawCutRange(intX,intY); end; end; alLine: //礶絬 begin if message.WParam = WM_LBUTTONDOWN then begin CutRange.StartPoint.X := intX; CutRange.StartPoint.Y := intY; CutRange.EndPoint.X := intX; CutRange.EndPoint.Y := intY; CutRange.MouseIsDown := True; end else if message.WParam = WM_LBUTTONUP then begin CutRange.EndPoint.X := intX; CutRange.EndPoint.Y := intY; CutRange.MouseIsDown := False; uDrawLine(intX,intY,pmCopy); end; if CutRange.MouseIsDown then begin uDrawLine(intX,intY,pmXor); end; end; alPolyLine: //礶ヴ種Ρ絬 begin if message.WParam = WM_LBUTTONDOWN then begin CutRange.StartPoint.X := intX; CutRange.StartPoint.Y := intY; CutRange.MouseIsDown := True; end else if message.WParam = WM_LBUTTONUP then begin CutRange.EndPoint.X := intX; CutRange.EndPoint.Y := intY; CutRange.MouseIsDown := False; uDrawPolyLine(intX,intY); end; if CutRange.MouseIsDown then begin uDrawPolyLine(intX,intY); end; end; alRang: //礶痻 begin if message.WParam = WM_LBUTTONDOWN then begin CutRange.StartPoint.X := intX; CutRange.StartPoint.Y := intY; CutRange.EndPoint.X := intX; CutRange.EndPoint.Y := intY; CutRange.MouseIsDown := True; end else if message.WParam = WM_LBUTTONUP then begin CutRange.EndPoint.X := intX; CutRange.EndPoint.Y := intY; CutRange.MouseIsDown := False; uDrawRang(intX,intY,pmCopy); end; if CutRange.MouseIsDown then begin uDrawRang(intX,intY,pmXor); end; end; alRangC: //礶蛾à痻 begin if message.WParam = WM_LBUTTONDOWN then begin CutRange.StartPoint.X := intX; CutRange.StartPoint.Y := intY; CutRange.EndPoint.X := intX; CutRange.EndPoint.Y := intY; CutRange.MouseIsDown := True; end else if message.WParam = WM_LBUTTONUP then begin CutRange.EndPoint.X := intX; CutRange.EndPoint.Y := intY; CutRange.MouseIsDown := False; uDrawRangC(intX,intY,pmCopy); end; if CutRange.MouseIsDown then begin uDrawRangC(intX,intY,pmXor); end; end; alRoud: //礶蛾 begin if message.WParam = WM_LBUTTONDOWN then begin CutRange.StartPoint.X := intX; CutRange.StartPoint.Y := intY; CutRange.EndPoint.X := intX; CutRange.EndPoint.Y := intY; CutRange.MouseIsDown := True; end else if message.WParam = WM_LBUTTONUP then begin CutRange.EndPoint.X := intX; CutRange.EndPoint.Y := intY; CutRange.MouseIsDown := False; uDrawRoud(intX,intY,pmCopy); end; if CutRange.MouseIsDown then begin uDrawRoud(intX,intY,pmXor); end; end; alText: //糶ゅ begin if message.WParam = WM_LBUTTONDOWN then begin if TextFormHan<=0 then begin SendMessage(CutRangeFormHan,WM_CLOSE,0,0); CutRangeFormHan := 0; TextForm := TTextForm.Create(nil); TextFormHan := TextForm.Handle; TextForm.Left := intX; TextForm.Top := intY; CutRange.StartPoint.X := intX; CutRange.StartPoint.Y := intY; TextForm.Show; btnText.Down := False; end else begin if (intX<TextForm.Left) or (intY<TextForm.Top) or (intX>TextForm.Left+TextForm.Width) or (intY>TextForm.Top+TextForm.Height) then begin SendMessage(TextFormHan,MSG_SANWRITETEXT,100,0); // SendMessage(TextFormHan,WM_CLOSE,0,0); TextFormHan :=0; uUnWinHook; // CutRange.EndPoint.X := intX; // CutRange.EndPoint.Y := intY; CutRange.MouseIsDown := False; CurAction := alNone; end; end; end else if message.WParam = WM_LBUTTONUP then begin end; //MoveWindow(TextFormHan,intX,intY,1,1,True); end; end; end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值