cs_barbichette
Messages postés220Date d'inscriptionlundi 30 octobre 2000StatutMembreDernière intervention15 juillet 2013
-
19 nov. 2006 à 14:10
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 2022
-
20 nov. 2006 à 16:39
Bonjour à tous.
Je cherche un algo pour remplir un polygone concave ou convexe sans utiliser le GDI.
J'ai donc une liste de points quelconques, et je veux savoir si un point du plan est dans ou en dehors du polygone.
Les méthodes classiques comme le scanline ne fonctionnent a priori pas puisqu'il faud un poly convexe. sniff...
Quelqu'un aurait une idée, une astuce, un site, quelque chose.. je ne asis pas
Je suis désespéré, je trouve rien sur Internet...
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 20136 19 nov. 2006 à 14:56
sinon la solution manuelle : tu cree une droite querlconque qui passe par ton point, et tu regarde les intersections avec les cotes de ton poly qui sont des points t pas des segments. si le nombre d'intersections avant et apres ton poly sont impaires, alors le pointest dans le polygone.
Utilisez la méthode FloodFill pour remplir une zone, pas nécessairement rectangulaire, de l'image avec la valeur de Brush. Les limites de la région à remplir sont déterminées en se déplaçant dans toutes les directions à partir du point (X,Y) jusqu'à ce qu'une limite de couleur impliquant le paramètre Color soit rencontrée.
Le paramètre FillStyle détermine le style de remplissage, c'est-à-dire le type de modification de couleur qui définit les limites. Il peut prendre une des valeurs suivantes.
cs_barbichette
Messages postés220Date d'inscriptionlundi 30 octobre 2000StatutMembreDernière intervention15 juillet 2013 19 nov. 2006 à 14:26
le problème, c'est que je ne dessine pas dans un canvas, et je ne veux pas utiliser le GDI.
Car, c'est dans un cas bien particulier.
Il me faud plus un algo qu'une fonction toute faite.
cs_barbichette
Messages postés220Date d'inscriptionlundi 30 octobre 2000StatutMembreDernière intervention15 juillet 2013 20 nov. 2006 à 11:00
Merci bien pour le systeme de région. Je vais voir ça.
Par contre, Guillemouze, j'ai pas bien suivi ton explication. Mais ça m'intéresse quand même...
les intersections avec les cotes de ton poly qui sont des points t pas des segments
Là, pas bien compris
Tu pourrais être un peu plus explicite..
Sinon si tu optes pour la méthode de région il existe aussi ceci :
{$EXTERNALSYM FillRgn}
function FillRgn(DC: HDC; hrgn: HRGN; hbr: HBRUSH): BOOL; stdcall;
elle fonctionne aussi avec un HDC et un HBR qui au final offre bien plus de possibilitées :
remplire la région, selon un motif, une image, une couleur