p
u
b
l
i
c
i
t
é
publicité

Discussion: Prévisualiser ligne TCanvas [Lazarus]

  1. #1
    Invité régulier
    Homme Profil pro
    Inscrit en
    novembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : novembre 2011
    Messages : 8
    Points : 5
    Points
    5

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

  2. #2
    Expert Confirmé Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    avril 2011
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    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 940
    Points : 2 852
    Points
    2 852

    Par défaut

    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...
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  3. #3
    Invité régulier
    Homme Profil pro
    Inscrit en
    novembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : novembre 2011
    Messages : 8
    Points : 5
    Points
    5

    Par défaut

    Merci je vais essayer ça, j'espere juste que ça ne "rame" pas trop sur le canvas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. retour à la ligne automatique dans un TCanvas
    Par richard038 dans le forum API, COM et SDKs
    Réponses: 12
    Dernier message: 27/03/2006, 21h39
  2. Aide en ligne
    Par étoile dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/08/2002, 14h00
  3. [TP]lire une ligne de l'ecran et la stocker dans une chaine
    Par Bleuarff dans le forum Turbo Pascal
    Réponses: 26
    Dernier message: 02/07/2002, 10h08
  4. Couleur des lignes dans DBGrid
    Par eddie dans le forum C++Builder
    Réponses: 5
    Dernier message: 21/06/2002, 18h15
  5. String Grid et choix d'une couleur pour une ligne
    Par Gigottine dans le forum C++Builder
    Réponses: 12
    Dernier message: 17/05/2002, 15h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo