Comment remplir une zone d'un form en VB .NET ?

Darkzombie Messages postés 12 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 13 juillet 2005 - 13 juil. 2005 à 13:18
Darkzombie Messages postés 12 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 13 juillet 2005 - 13 juil. 2005 à 15:41
Bonjour tout le monde,

Je vais essayer de m'expliquer clairement et de la manière la plus simple possible...

Je suis actuellement sur un gros projet en VB .NET dans lequel j'affiche directement dans un form une série de lignes, arcs ou ellipses à l'aide des fonctions DrawLine, DrawArc, DrawEllipse (donc pas dans une PictureBox mais directement dans le form).

Celà fait quelques jours que je cherche une solution pour arriver à remplir les zones créées grâce à ces lignes, arcs et ellipses ; un peu comme si on utilisait le pinceau sous Paint...

Je sais qu'il existe les fonctions Fill... mais je ne saurais pas les utiliser dans le sens où les formes sont créées à l'aide de lignes (arcs et ellipses) et qu'il m'est impossible de faire autrement (elles sont dessinées selon plusieurs variables remplies par l'utilisateur).

J'ai donc trouvé suite à mes recherches l'API "ExtFloodFill" qui a l'air de fonctionner très bien mais... en VB 6.0 uniquement. Je n'arrive définitivement pas à l'adapter sous .NET !

Alors si quelqu'un avait la gentillesse de me donner une idée pour remplacer ou faire fonctionne cet API, il me sauverait la vie !!!

Merci d'avance pour vos réponses :)

4 réponses

Darkzombie Messages postés 12 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 13 juillet 2005
13 juil. 2005 à 15:01
Okaayyyyyy !!

J'ai trouvé finalement, j'ai réussi à faire fonctionner ExtFloodFill de cette façon :

Dim hdc As IntPtr = e.GetHdc()
Dim hBrush As IntPtr
Dim last As IntPtr
Dim test As Integer

'Bleu :
hBrush = CreateSolidBrush(Color.FromArgb(0, 255, 0, 0).ToArgb())
last = SelectObject(hdc, hBrush)

ExtFloodFill(hdc, 10, 10, 0, FLOODFILLSURFACE)

En 10, 10 (x, y), j'y ai mis un rectangle avec un fond noir et un contour rouge. Dans le fonction "ExtFloodFill", on indique "0" pour lui dire qu'il s'agit de la couleur noir. Avec FLOODFILLSURFACE, on indique à la fonction que lorsqu'il sort de la couleur noir et donc touche un des bord rouge, il remplace la couleur noir par celle du Brush (bleu).

Ca marche à merveille...
Je n'y serais pas arrivé dans l'aide de ce site alors... encore bravo pour la grande originalité et utilité de ce super site !

A bientôt.
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
13 juil. 2005 à 15:04
Salut,



Je te donnes plusieurs pistes :



1--> Essaye un peu de voir du côté de FillPath et FillRegion





Plus dur.

2-- > Regardes le code de http://www.eecs.wsu.edu/paint.net/download.htm


Tu trouveras peut etre la fonction que tu recherches.
0
Darkzombie Messages postés 12 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 13 juillet 2005
13 juil. 2005 à 15:38
Oui,

j'avais également essayé avec FillPath et FillRegion mais je n'arrive pas à remplir la zone que je voudrais remplir... En fait, il me rempli un rectangle complet par exemple mais par la forme complexe qui s'est formée suite à la jointure de plusieurs lignes et courbes...

Pour ce qui est de la seconde piste, ca a l'air pas mal en effet, je garde ce lien pour une prochaine fois car là, puisque j'ai réussi à faire fonctionner le ExtFloodFill, je vais arrêter de me prendre la tête là dessus et avancer dans mon programme. Si j'ai encore le temps, je chercherai à l'améliorer avec ca...

Merci pour ton aide.
a+
0
Darkzombie Messages postés 12 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 13 juillet 2005
13 juil. 2005 à 15:41
Il fallait lire :

j'avais également essayé avec FillPath et FillRegion mais je n'arrive pas à remplir la zone que je voudrais remplir... En fait, il me remplit un rectangle mais PAS la forme complexe que j'ai formée suite à la jointure de plusieurs lignes et courbes...
0
Rejoignez-nous