Bonjour à tous,

Mon problème est de detecter qu'un point "cliqué" appartient à une ligne tracée avec le pen. Au depart j'ai donc un tableau de TPoint, et je trace une ligne avec le pen entre ces TPoints...Au passage je crée également une région pour chaque segment de cette ligne.
Puis j'utilise PtInRegion pour savoir si le point cliqué appartient à une région.
Le problème c'est que les résultats sont très aléatoires, voir incohérents...
Pièce jointe 5344
La courbe en noir étant celle des régions, la bleue la courbe réellement tracée. lorsque je clic sur la courbe noire, pas de détection, mais lorsque je clic sur la bleue, parfois il y a détection (une fois sur deux environ).

Pour aider à la compréhension, je joins également mon code pour tracer ma ligne et mes régions:
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
procedure TLigne.TracerLigne(aPaint:TPaintBox);
var seg:integer;
    points : array[0..3] of TPoint;
begin
 
setlength(Ri,length(lignes)-1);    //lignes est mon tableau de TPoints
 aPaint.Canvas.Pen.Width := 8;
 aPaint.Canvas.moveto(lignes[0].XPosition,lignes[0].YPosition);
for seg:=0 to length(lignes)-2 do
begin
  points[0] := point(lignes[seg].XPosition,lignes[seg].YPosition);
  points[1] := point(lignes[seg+1].XPosition,lignes[seg+1].YPosition);
  points[2] := point(lignes[seg+1].XPosition ,lignes[seg+1].YPosition +8);
  points[3] := point(lignes[seg].XPosition ,lignes[seg].YPosition + 8);
 
  Ri[seg] := CreatePolygonRgn(Points, 4, ALTERNATE);
  if (lignes[seg+1].TypeSection=0) then SetColor(clBlue)
  else SetColor(clRed);
   aPaint.Canvas.Brush.Color := aColor;
 
 aPaint.Canvas.Pen.Color:= aColor;
 aPaint.Canvas.lineto(points[1].X,points[1].Y);
  end;
end;
Quelqu'un arrive-til à savoir pourquoi mon raisonnement est mauvais et/ou connaiterais une meilleur façon de proceder?

Merci beaucoup, par avance, de votre patience et de votre aide.

@+.