[VCL][D6]Tracé de lignes ds un PaintBox
Bonjour à tous,
voilà j'ai un problème j'écris un programme pour tracer une ligne en maintenant le bouton de la souris enfonce et en la déplacant. j'utilise une procédure qui efface le PaintBox à chaque mouvement avec bouton enfoncé pour éviter de faire des miliers de lignes. Le problème, c'est que quand je fais une ligne ca va mais qd j'en fait une autre, la précédente est effacé ce qui est normal mais je sais pas comment faire pour pouvoir en tracer plusieurs sans quelles soient effacées. :(
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TDessinForm = class(TForm)
PaintBox1: TPaintBox;
procedure FormCreate(Sender: TObject);
procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
DessinForm: TDessinForm;
Enfonce : Boolean;
DepartPosition, FinPosition: TPoint;
implementation
{$R *.dfm}
procedure TDessinForm.FormCreate(Sender: TObject);
begin
Enfonce:=false;
end;
procedure TDessinForm.PaintBox1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Enfonce:=true;
DepartPosition.X:=X;
DepartPosition.Y:=Y;
end;
procedure TDessinForm.PaintBox1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
procedure ViderCanvas;
begin
PaintBox1.Canvas.Brush.Color:=RGB(255,255,255);
PaintBox1.Canvas.FillRect(Canvas.ClipRect);
end;
begin
if (Enfonce) then
begin
ViderCanvas;
PaintBox1.Canvas.MoveTo(DepartPosition.X, DepartPosition.Y);
PaintBox1.Canvas.LineTo(X, Y);
end;
end;
procedure TDessinForm.PaintBox1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Enfonce:=false;
end;
end. |
Si vous avez une alternative, je suis ouvert à toute propositions :mrgreen:
Merci d'avance