Coloriage de triangle

Le
Arnaud
Salut à tous

Je voudrais " colorier " une forme graphique réalisée par des Lines : un
triangle par exemple en couleur 6

Form1.Picture1.Line (X, Y)-Step(0, 200), QBColor(6)
Form1.Picture1.Line (X, Y + 200)-Step(130, -100), QBColor(6)
Form1.Picture1.Line (X + 130, Y + 100)-Step(-130, -100), QBColor(6)

Existe t'il une solution / instruction simple pour ça en VB6 ?

Merci d'avnce

Arnaud
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-marc
Le #16541301
Arnaud wrote:
Salut à tous

Je voudrais " colorier " une forme graphique réalisée par des Lines :
un triangle par exemple en couleur 6

Form1.Picture1.Line (X, Y)-Step(0, 200), QBColor(6)
Form1.Picture1.Line (X, Y + 200)-Step(130, -100), QBColor(6)
Form1.Picture1.Line (X + 130, Y + 100)-Step(-130, -100), QBColor(6)

Existe t'il une solution / instruction simple pour ça en VB6 ?

Merci d'avnce

Arnaud



Hello,

oui il suffot d'utiliser l'API "F l o o d f i l l" .
Voir MSDN:
http://msdn.microsoft.com/en-us/library/ms532286(VS.85).aspx

Et un exemple:
http://forums.msdn.microsoft.com/en-US/vbgeneral/thread/db945af8-efc1-47e4-8483-3e1e859bb492/
et un autre:
http://www.vb-helper.com/howto_flood_fill.html

Voir aussi un sujet d'hier avec la réponse de Jacques.

Cordialement;


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
LE TROLL
Le #16541781
Bonjour, vois ma question, tu as tout, Le Troll 12/08/08 11h03 :o)

--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Arnaud" 48a33501$0$292$
| Salut à tous
|
| Je voudrais " colorier " une forme graphique réalisée par des Lines : un
| triangle par exemple en couleur 6
|
| Form1.Picture1.Line (X, Y)-Step(0, 200), QBColor(6)
| Form1.Picture1.Line (X, Y + 200)-Step(130, -100), QBColor(6)
| Form1.Picture1.Line (X + 130, Y + 100)-Step(-130, -100), QBColor(6)
|
| Existe t'il une solution / instruction simple pour ça en VB6 ?
|
| Merci d'avnce
|
| Arnaud
|
|
Arnaud
Le #16550481
Merci de vos reponses :o)

Ca ne fontionne que si je pointe hors du triangle. Tout ce rempli sauf
l'interieur du triangle Ca ne fontionne pas si je pointe dans la triangle
...

Form1.Picture1.FillStyle = 0
Form1.Picture1.ForeColor = 0 ' Triangle couleur noir
Form1.Picture1.FillColor = 0
Form1.Picture1.Line (X , Y)-Step(0, 200), 0
Form1.Picture1.Line -Step(150, -100), 0
Form1.Picture1.Line -Step(-150, -100), 0
F l o o d F i l l Form1.Picture1.hDC, X + 100, Y + 100, 0
LE TROLL
Le #16550941
Bonjour,

Oui... moi non plus je n'ai pas réussi, j'ai fini par remplir mon cercle de
rayons d'une autre couleur, tente de faire pareil pour le triangle, remplis
le avec des "line"...

Par contre, pour le cercle ça marche, tu peux aussi faire un cercle coloré
dans la couleur voulue, et enlever ce qui dépasse dans la couleur de fond...

--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Arnaud" 48a535c7$0$289$
| Merci de vos reponses :o)
|
| Ca ne fontionne que si je pointe hors du triangle. Tout ce rempli sauf
| l'interieur du triangle Ca ne fontionne pas si je pointe dans la triangle
| ...
|
| Form1.Picture1.FillStyle = 0
| Form1.Picture1.ForeColor = 0 ' Triangle couleur noir
| Form1.Picture1.FillColor = 0
| Form1.Picture1.Line (X , Y)-Step(0, 200), 0
| Form1.Picture1.Line -Step(150, -100), 0
| Form1.Picture1.Line -Step(-150, -100), 0
| F l o o d F i l l Form1.Picture1.hDC, X + 100, Y + 100, 0
|
|
Jacques93
Le #16553211
Bonjour Arnaud,
Arnaud a écrit :
Merci de vos reponses :o)

Ca ne fontionne que si je pointe hors du triangle. Tout ce rempli sauf
l'interieur du triangle Ca ne fontionne pas si je pointe dans la triangle
...

Form1.Picture1.FillStyle = 0
Form1.Picture1.ForeColor = 0 ' Triangle couleur noir
Form1.Picture1.FillColor = 0
Form1.Picture1.Line (X , Y)-Step(0, 200), 0
Form1.Picture1.Line -Step(150, -100), 0
Form1.Picture1.Line -Step(-150, -100), 0
F l o o d F i l l Form1.Picture1.hDC, X + 100, Y + 100, 0





Ton code ne peux pas fonctionner, s'il est complet. Comme tu n'indique s
pas :

Form1.Picture1.Scalemode = vbPixels

tu travailles avec l'unité de mesure par défaut, c'est à dire le Twips.
L'api fonctionne uniquement en pixels, il faut donc soit tout faire en
pixels, soit convertir les coordonnées avant de les passer à l'api.

Essaie ce code :

Dim x As Single, y As Single

' Arbitraire
x = 360: y = 360
Form1.Picture1.FillStyle = 0
Form1.Picture1.ForeColor = 0 ' Triangle couleur noir
Form1.Picture1.FillColor = 0
Form1.Picture1.Line (x, y)-Step(0, 200), 0
Form1.Picture1.Line -Step(150, -100), 0
Form1.Picture1.Line -Step(-150, -100), 0

' permet de vérifier que le point est à l'intérieur
' de la zone à remplir, à mettre en remarque une fois le
' point positionné
Form1.Picture1.DrawWidth = 2
Form1.Picture1.PSet (x + 60, y + 90), QBColor(9)

' L'api fonctionne en pixels, pas en twips, il faut
' convertir les coorfonnées ( 1 pixel = 15 twips)
F l o o d F i l l Form1.Picture1.hDC, _
(x / Screen.TwipsPerPixelX) + 2, _
(y / Screen.TwipsPerPixelY) + 3, _
0

' comme tu n'a pas crée de pinceau avec CreateSolidBrush, le triangle
sera rempli par la couleur par défaut : noir


--

Cordialement,

Jacques.
Jacques93
Le #16553351
Bonjour LE TROLL,
LE TROLL a écrit :
Bonjour,

Oui... moi non plus je n'ai pas réussi, j'ai fini par remplir mon cercle de
rayons d'une autre couleur, tente de faire pareil pour le triangle, remplis
le avec des "line"...



Tout en finesse ...
Le point que tu passes à l'api est probablement mal positionné. Tu peux
vérifier avec un PSet ou il se trouve (il vaut mieux mettre l'appel à
l'api en remarque pendant cette phase de mise au point)

Je te rappelle aussi que vbPixel = 0, car cette constante n'existe pas.
Si tu n'as pas rectifié, tu travaille en Twips. L'Api fonctionne
uniquement avec des pixels.

Regardes la réponse que j'ai fait à Arnaud. Le code marche, ainsi que
celui que je t'ai donné. La différence est que pour un triangle, on peut
prendre n'importe quel point(comme on a un triangle équilatéral, son
centre par exemple), alors que pour une partie de cercle, il faut
calculer sa position en fonction des deux rayons, et du diamètre du cercle.

--

Cordialement,

Jacques.
Jacques93
Le #16553521
Jacques93 a écrit :
Bonjour Arnaud,



[...]


' permet de vérifier que le point est à l'intérieur
' de la zone à remplir, à mettre en remarque une fois le
' point positionné
Form1.Picture1.DrawWidth = 2
Form1.Picture1.PSet (x + 60, y + 90), QBColor(9)

' L'api fonctionne en pixels, pas en twips, il faut
' convertir les coorfonnées ( 1 pixel = 15 twips)
F l o o d F i l l Form1.Picture1.hDC, _
(x / Screen.TwipsPerPixelX) + 2, _
(y / Screen.TwipsPerPixelY) + 3, _
0




Pour éviter de faire l'erreur que j'ai commise :

60 twips => 2 pixels au lieu de 4
90 twips => 3 pixels au lieu de 6

il aurait été plus prudent et plus propre d'écrire :

F l o o d F i l l Form1.Picture1.hDC, _
(x + 60) / Screen.TwipsPerPixelX, _
(y + 90) / Screen.TwipsPerPixelY, _
0

--

Cordialement,

Jacques.
Arnaud
Le #16553871
Magnifique Jaques93 , ca fontionne :o)

Mille merci


"Jacques93" a écrit dans le message de news:
e7SCIFu$
Jacques93 a écrit :
Bonjour Arnaud,



[...]


' permet de vérifier que le point est à l'intérieur
' de la zone à remplir, à mettre en remarque une fois le
' point positionné
Form1.Picture1.DrawWidth = 2
Form1.Picture1.PSet (x + 60, y + 90), QBColor(9)

' L'api fonctionne en pixels, pas en twips, il faut
' convertir les coorfonnées ( 1 pixel = 15 twips)
F l o o d F i l l Form1.Picture1.hDC, _
(x / Screen.TwipsPerPixelX) + 2, _
(y / Screen.TwipsPerPixelY) + 3, _
0




Pour éviter de faire l'erreur que j'ai commise :

60 twips => 2 pixels au lieu de 4
90 twips => 3 pixels au lieu de 6

il aurait été plus prudent et plus propre d'écrire :

F l o o d F i l l Form1.Picture1.hDC, _
(x + 60) / Screen.TwipsPerPixelX, _
(y + 90) / Screen.TwipsPerPixelY, _
0

--

Cordialement,

Jacques.


Jacques93
Le #16554551
Arnaud a écrit :
Magnifique Jaques93 , ca fontionne :o)

Mille merci




Merci du retour :-)

--

Cordialement,

Jacques.
Publicité
Poster une réponse
Anonyme