Bonjour,
Je reviens vers vous avec mon problème de Polyligne... J'arrive à tracer une polyligne quand on clique plusieurs fois sur le canvas de ma Form1, ça pas de souci...
Par contre, je voudrais, après avoir cliqué sur le premier point, prévisualiser ma ligne avant de cliquer sur le second point et donc de la dessiner...
Voici mon code
Le souci c'est que comme ça, j'ai plein de lignes qui se dessinent en plus de celle que je veux... normal vu que je dessine à chaque fois que je bouge ma souris, mais je voudrais ne garder que la bonne et effacer les autres...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin //if self.Canvas.Pixels[x,y] = clred then showmessage('Ok'); if not poly then exit; if firstpoint then begin idx := 0; setlength(TabP,idx+1); tabP[idx].X := X; tabP[idx].Y := Y; inc(idx); end; if not firstpoint then begin setlength(TabP, idx+1); tabP[idx].X := X; tabP[idx].Y := Y; image.Canvas.Pen.Color := ClRed; image.Canvas.Pen.Mode:= pmcopy; image.Canvas.Pen.Width:=5; image.Canvas.Polyline([Point(TabP[idx-1].X,TabP[idx-1].Y), Point(X,Y)]); inc(idx); RefreshCanvas; end; firstpoint := false; end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin //Controle du deplacement du dessin //if (shift <> [ssmiddle]) then exit; //if (coX < X) then // scrbas.Position := scrbas.Position+25 //else // scrbas.Position := scrbas.Position-25; //coX := X; if image = nil then exit; if not poly then exit; //Dessiner une polyligne if not firstpoint then begin image.Canvas.Pen.Color := ClRed; image.Canvas.Pen.Width:=5; image.Canvas.Pen.Style:=pssolid; image.canvas.MoveTo(tabp[idx-1].X,tabp[idx-1].Y); image.Canvas.LineTo(x,y); RefreshCanvas; end; end;
Merci à vous
Partager