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.
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.
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.
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" <clerget_aclub-internet.fr> a écrit dans le message de news: 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 | |
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" <clerget_aclub-internet.fr> a écrit dans le message de news:
48a33501$0$292$7a628cd7@news.club-internet.fr...
| 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
|
|
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" <clerget_aclub-internet.fr> a écrit dans le message de news: 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
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
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
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
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" <clerget_aclub-internet.fr> a écrit dans le message de news: 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 | |
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" <clerget_aclub-internet.fr> a écrit dans le message de news:
48a535c7$0$289$7a628cd7@news.club-internet.fr...
| 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
|
|
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" <clerget_aclub-internet.fr> a écrit dans le message de news: 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
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.
' 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.
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.
' 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
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.
' 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
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.
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.
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
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 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
' 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
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.
Magnifique Jaques93 , ca fontionne :o)
Mille merci
"Jacques93" <jacques@Nospam> a écrit dans le message de news:
e7SCIFu$IHA.5956@TK2MSFTNGP04.phx.gbl...
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
"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