unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(TForm) Image1: TImage; Image2: TImage; Label1: TLabel; Label2: TLabel; procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Image2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Image2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); end; var Form1 : TForm1; PtDepart : TPoint; PtArrivee : TPoint; implementation {$R *.dfm} ////// Sélection avec API Windows sur Image1/////// Procedure DessineRectangleAPI; var HandleDCForm : HDC; begin HandleDCForm := GetDC(Form1.Handle); DrawFocusRect(HandleDCForm, rect(PtDepart.X,PtDepart.Y,PtArrivee.x,PtArrivee.Y)); ReleaseDC(Form1.Handle,HandleDCForm); Form1.Label1.Caption := 'Largeur := ' + IntToStr(Abs(PtArrivee.x - PtDepart.X)); Form1.Label2.Caption := 'Hauteur := ' + IntToStr(Abs(PtArrivee.Y - PtDepart.Y)); end; procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button=mbLeft then begin PtDepart:=Form1.ScreenToClient(Image1.ClientToScreen(Point(X,Y))); PtArrivee:=PtDepart; DessineRectangleAPI; end; end; procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if (ssLeft in Shift) then begin DessineRectangleAPI; PtArrivee:=Form1.ScreenToClient(Image1.ClientToScreen(Point(X,Y))); DessineRectangleAPI; end; end; ////// Sélection sans API Windows sur Image2/////// Procedure DessineRectangle; begin Form1.Image2.canvas.Pen.Width := 1; Form1.Image2.canvas.Pen.Style :=psSolid; Form1.Image2.canvas.Pen.Color :=clBlue; Form1.Image2.canvas.Pen.Mode := pmNotXor; Form1.Image2.canvas.Pen.Style :=psDot; Form1.Image2.canvas.Brush.Style:=bsCross; Form1.Image2.canvas.Rectangle(PtDepart.x,PtDepart.y,PtArrivee.x,PtArrivee.y); Form1.Label1.Caption := 'Largeur := ' + IntToStr(Abs(PtArrivee.x - PtDepart.x)); Form1.Label2.Caption := 'Hauteur := ' + IntToStr(Abs(PtArrivee.y - PtDepart.y)); end; procedure TForm1.Image2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button=mbLeft then begin PtDepart:=Point(X,Y); PtArrivee:=PtDepart; end; end; procedure TForm1.Image2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if (ssLeft in Shift) then begin DessineRectangle; PtArrivee:=Point(X,Y); DessineRectangle; end; end; END.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question