Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    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 : 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

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

    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...
    Citations :
    Le scientifique lira des centaines de livres au cours de sa vie et restera persuadé qu'il lui reste beaucoup à apprendre.
    Un religieux n'en lira qu'un et sera persuadé d'avoir tout compris.

    Il n'est pas de vent favorable pour celui qui ne sait pas où il va. (Sénèque)

  3. #3
    Invité de passage
    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 : 4
    Points
    4

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •