Précédent   Forum du club des développeurs et IT Pro > Autres langages > Pascal > Lazarus
Lazarus Forum d'entraide sur Lazarus, l'EDI RAD multiplateforme basé sur Free Pascal
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 05/12/2012, 16h14   #1
Manusm
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : novembre 2011
Messages : 8
Points : 4
Points : 4
Par défaut Prévisualiser ligne TCanvas

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
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
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;
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...

Merci à vous
Manusm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2012, 08h33   #2
Jon Shannow
Membre Expert
 
Avatar de Jon Shannow
 
Homme
Responsable de service informatique
Inscription : avril 2011
Messages : 1 153
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : avril 2011
Messages : 1 153
Points : 1 697
Points : 1 697
Avant de dessiner la nouvelle, tu redessines l'ancienne en mode XOR je crois. Y a longtemps que j'ai pas fait ça, alors je ne suis plus très sûr, mais c'est un truc dans ce genre là. A creuser...
__________________
L'Amour est fort difficile à conjuguer.
Au passé, il n'est jamais simple.
Au présent, il n'est qu'indicatif.
Et au futur, il n'est que conditionnel.
(d'après Jean Cocteau)
Jon Shannow est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2012, 09h14   #3
Manusm
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : novembre 2011
Messages : 8
Points : 4
Points : 4
Merci je vais essayer ça, j'espere juste que ça ne "rame" pas trop sur le canvas
Manusm est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h45.


 
 
 
 
Partenaires

Hébergement Web