Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : remplissage de polygones [ Algorithme / Autre ] (barbichette)

dimanche 19 novembre 2006 à 14:10:47 | remplissage de polygones

barbichette

Membre Club
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...

Barbichette

dimanche 19 novembre 2006 à 14:21:20 | Re : remplissage de polygones

cirec

Membre Club Administrateur CodeS-SourceS
Salut,

FloodFill peut être ?

procedure FloodFill(X, Y: Integer; Color: TColor; FillStyle: TFillStyle);

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.
 
@+
Cirec


dimanche 19 novembre 2006 à 14:26:12 | Re : remplissage de polygones

barbichette

Membre Club
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.

Merci quand même



dimanche 19 novembre 2006 à 14:39:03 | Re : remplissage de polygones

cirec

Membre Club Administrateur CodeS-SourceS
le fait de ne pas dessiner dans un Canvas n'est pas un problème pour utiliser TCanvas
mais comme tu ne veux pas utiliser le GDI ...
sinon il y a ça :
http://www.delphifr.com/codes/COMMENT-REMPLIR-POLYGONE-SANS-UTILISER-GDI-WINDOWS_39053.aspx

Mais on ne sait pas ce qu'il y a dedans ...
l'auteur utilise une DLL mais ne donne pas la source de cette dernière !!!!

 
@+
Cirec


dimanche 19 novembre 2006 à 14:56:58 | Re : remplissage de polygones

Guillemouze

Réponse acceptée !
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.

dimanche 19 novembre 2006 à 15:16:16 | Re : remplissage de polygones

cirec

Membre Club Administrateur CodeS-SourceS
Dans ce cas il est plus simple de transformer le poly en Région et de tester le point avec :

If PtInRegion(RGN: HRGN; X, Y: Integer) Then ...

et pour accelerer le mouvement rien ne t'empêche d'utiliser ScanLine

ce qui au final, a mon avis, serat bien plus rapide .

 
@+
Cirec


lundi 20 novembre 2006 à 11:00:24 | Re : remplissage de polygones

barbichette

Membre Club
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..

Merci

lundi 20 novembre 2006 à 16:39:25 | Re : remplissage de polygones

cirec

Membre Club Administrateur CodeS-SourceS
PS: il existe aussi une fonction dans Windows.pas qui porte le même nom (FloodFill) et qui n'est pas relié a un canvas :

{$EXTERNALSYM FloodFill}
function FloodFill(DC: HDC; nXStart, nYStart: Integer; crFill: COLORREF): BOOL; stdcall;

je suppose que tu as au moins un HDC

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


 
@+
Cirec


mercredi 22 novembre 2006 à 00:08:20 | Re : remplissage de polygones

barbichette

Membre Club
bon, j'ai trouvé mon bonheur et je l'ai adapté en pascal :

http://www.delphifr.com/code.aspx?ID=40419

merci a tous

barbichette



Cette discussion est classé dans : polygones, remplissage, polygone, convexe


Répondre à ce message

Sujets en rapport avec ce message

accélération d'animations 2D [ par Fandril ] Je reprend un projet ou il y a des animations 2D faites avec le canva standard de delphi. Cependant, ces animations sont beaucopup trop lente (l'utili Comment faire ??? [ par yoghisan ] Bonjour,Je veux dessiner des polygones fermés (facile avec des lineto). Là où ca se complique pour moi c'est que je veux remplir rapidement ce polygon remplissage automatique de formulaire web [ par thone08 ] Bonjour j'aurai voulu savoir comment faire pour remplir des formulaire web de facon automatique soit par un webrowser ou par internet explorer ;) merc Remplissage d'une stringgrid [ par Rankin ] Salut, je me posais seulement la question de savoir si dans une stringgrid le texte peut s'afficher sur plusieurs ligne, parce que je souhaite y affic Remplissage de champs autom sur une page Web [ par biloue ] Bonjour à tousJe sais que le sujet a déjà été traité mais je n'arrive pas à ouvrir le source.Je voudrais savoir si il est possible de remplir automati tracer un polygone regulier [ par fadoro ] Bonjour alors je m'explique Je cherche à tracer des polygones sur un paintbox avec delphic'est ok por les polygones quelconques grace à une liste de p Remplissage des champ d'un modéle Pdf [ par Oniria ] Bonjour,Actuellement, je désire remplir un modéle de fichier Pdf ( Il a des champ à remplir ) avec des données de mon programme. En effet, je sais cré Autocad savoir si un objet est compris dans un polygone [ par CharlyLaventure ] Bonjour à tous,   Sous Delphi, quelqu'un sait-il comment savoir dans AutoCad si un graphique (texte ou autre) ou sa coordonnée x,y est compris dans un Technique pour créer un polygone concave OpenGl [ par Kucrapok ] Bonjour, je suis nouveau sur ce forum et j'aimerais avoir de l'aide pour l'un de mes projets. J'utilise présentement Delphi 2007  et je souhaiterais c


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,484 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.