Mega Code Archive

 
Categories / Delphi / System
 

Windows ekraninda yer alan bir bölümün mouse hareketlerine göre alinmasi ve büyütülmesi

{Form'a bit TTimer koyun ve Interval = 25 olsun.} procedure TForm1.Timer1Timer(Sender: TObject); var Srect,Drect,PosForme:TRect; iWidth,iHeight,DmX,DmY:Integer; iTmpX,iTmpY:Real; C:TCanvas; Kursor:TPoint; ZoomFactor: Integer; begin GetCursorPos(Kursor); PosForme:=Rect(Form1.Left,Form1.Top,Form1.Left+Form1.Width,Form1.Top+Form1.Height); If not PtInRect(PosForme,Kursor) then begin If Panel1.Visible=True then Panel1.Visible:=False; If Image1.Visible=False then Image1.Visible:=True; iWidth:=Image1.Width; iHeight:=Image1.Height; Drect:=Rect(0,0,iWidth,iHeight); { 2x kadar büyütür. 4x icin 2, ...} ZoomFactor := 1; iTmpX:=iWidth / (ZoomFactor * 4); iTmpY:=iHeight / (ZoomFactor * 4); Srect:=Rect(Kursor.x,Kursor.y,Kursor.x,Kursor.y); InflateRect(Srect,Round(iTmpX),Round(iTmpY)); // move Srect if outside visible area of the screen If Srect.Left<0 then OffsetRect(Srect,-Srect.Left,0); If Srect.Top<0 then OffsetRect(Srect,0,-Srect.Top); If Srect.Right>Screen.Width then OffsetRect(Srect,-(Srect.Right-Screen.Width),0); If Srect.Bottom>Screen.Height then OffsetRect(Srect,0,-(Srect.Bottom-Screen.Height)); C:=TCanvas.Create; try C.Handle:=GetDC(GetDesktopWindow); Image1.Canvas.CopyRect(Drect,C,Srect); finally C.Free; end; Application.ProcessMessages; end // Cursor Form'un icinde degil else begin // cursor Form'un icinde If Panel1.Visible=False then Panel1.Visible:=True; If Image1.Visible=True then Image1.Visible:=False; end; end;