Bonjour à tous,
Je voudrais utiliser la fonction PtInRegion pour déterminer si un point se trouve à l'intérieur d'une "zone" écran.
Méthode 1:
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 procedure IsInRegion; var arPoints : array [0..3] of TPoint; R1 : HRGN; begin arPoints[0] := point(2000, 1000); arPoints[1] := point(3000, 1000); arPoints[2] := point(3000, 3000); arPoints[3] := point(2000, 3000); R1 := CreatePolygonRgn(arPoints, 4, WINDING); if (PtInRegion(R1, 2000, 2000)) then Application.MessageBox('Point 0', 'ptInRegion'); if (PtInRegion(R1, 2900, 2000)) then Application.MessageBox('Point 1', 'ptInRegion'); end;Les messages : 'Point 0' et 'Point 1' sont activés
Méthode 2 :
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 procedure IsInRegion; var arPoints : array of TPoint; R1 : HRGN; begin setLength(arPoints, 4); arPoints[0] := point(2000, 1000); arPoints[1] := point(3000, 1000); arPoints[2] := point(3000, 3000); arPoints[3] := point(2000, 3000); R1 := CreatePolygonRgn(arPoints, 4, WINDING); if (PtInRegion(R1, 2000, 2000)) then Application.MessageBox('Point 0', 'ptInRegion'); if (PtInRegion(R1, 2900, 2000)) then Application.MessageBox('Point 1', 'ptInRegion'); end;Aucun message n'est activé.
Pourquoi obtient-on un résultat différent avec le tableau défini par la méthode 1 et le tableau dynamique définit par la méthode 2?
(les listes de point du tableau semblent identiques avant d'entrer dans la fonction CreatePolygonRegion)
Est-il possible de détecter que le point 0 est 'au bord' de la région?
Merci d'avance pour vos réponses.
Partager