Suivi du point d'origine

De RAD Studio
Aller à : navigation, rechercher

Remonter à Amélioration du dessin des lignes

Lors du dessin d'une ligne, le point de départ de la ligne doit être suivi avec le champ Origin. Il faut initialiser Origin avec le point où l'événement bouton de souris enfoncé se produit. De cette manière, le gestionnaire de l'événement bouton de souris relâché peut utiliser Origin pour tracer le début de la ligne, comme dans le code :

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Drawing := True;
  Canvas.MoveTo(X, Y);
  Origin := Point(X, Y); { record where the line starts }
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Canvas.MoveTo(Origin.X, Origin.Y); { move pen to starting point }
  Canvas.LineTo(X, Y);
  Drawing := False;
end;
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
	TShiftState Shift, int X, int Y) {
	Drawing = true; // set the Drawing flag
	Canvas->MoveTo(X, Y); // set pen position
	Origin = Point(X, Y); // record where the line starts
}

void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
	TShiftState Shift, int X, int Y) {
	Canvas->MoveTo(Origin.x, Origin.y); // move pen to starting point
	Canvas->LineTo(X, Y); // draw line from PenPos to (X, Y)
	Drawing = false; // clear the Drawing flag
}

Ces modifications permettent de redessiner la ligne finale. Mais qu'en est-il des dessins intermédiaires ? L'application ne supporte pas encore le "rubber banding".

Voir aussi