Fillcolor

Résolu
cs_Maritime Messages postés 69 Date d'inscription dimanche 16 mars 2003 Statut Membre Dernière intervention 14 mars 2015 - 5 juil. 2013 à 14:12
cs_Maritime Messages postés 69 Date d'inscription dimanche 16 mars 2003 Statut Membre Dernière intervention 14 mars 2015 - 6 juil. 2013 à 13:02
Bonjour,
Je dois colorier l'espace entre deux courbes parallèles tracées sur une PicBox, quelqu'un peut il m'aider ?

Merci.

31 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
5 juil. 2013 à 22:44
et si maintenant tes "sinusoïdes" dont les trois (et plus deux, comme annoncé) que l'on voit en tracé jaune === >>>
1) tu n'en as pas dit un mot jusqu'à présent
2) elles sont "traversées" par un nombre important de lignes dont tu ne parlais pas non plus, ce qui rend compliqué ( ou simple, mais alors très très très lent ) le remplissage des "morceaux" ainsi présents.
Mais je te l'ai dit ===>>> je te laisse-là car je devine que s'il a fallu ce nombre de messages pour arriver au point où nous en sommes, il en faudra un nombre de valeur exponentielle (à coups de questions réponses diverses et encore moins "suivies" que celles par lesquelles nous sommes déjà passés)?
Voilà, ami. Bonne chance encore.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
cs_Maritime Messages postés 69 Date d'inscription dimanche 16 mars 2003 Statut Membre Dernière intervention 14 mars 2015 2
5 juil. 2013 à 23:12
La sinusoïde du milieu matérialise le midi Solaire vrai, l'axe du milieu est le midi du soleil moyen CaD, celui des horloges, de part est d'autres de cette courbe un décalage de +/- 45 mn du midi solaire vrai est matérialise par ces deux courbes, pour le nombre important de lignes CaD les pointillés, je peux les convertir en lignes continues comme celle du milieu.
A ce stade, où est la difficulté ?

Cordialement,
Maritime.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 juil. 2013 à 06:58
A ce stade, où est la difficulté ?

Elle est dans l'utilisation de la fonction ExtFloodFill de la librairie gdi32 de l'Api de Windows, laquelle peut "remplir" d'une couleur toute surface, mais à condition qu'elle ne présente aucun "trou" (complètement cernée).
Or (ton graphique) :
1) - tes deux sinusoïdes de part et d'autre de la sinusoïde centrale sont en pointillés (donc avec "trous") === >> ne devraient en avoir aucun
2) - ta sinusoïde centrale présente également des "cassures" (mais ça, c'est un bien et ce serait encore mieux si, quant à elle, elle était en pointillé, donc avec des trous)
3) - toutes les lignes courbes qui "traversent" tes 3 sinusoïdes sont pleines. Il faudrait qu'elles fussent, elles, en pointillé. Si tu les laisses pleines, le traitement sera très long (parcours en boucle des pixels pour "remplir" chaque "morceau" (surfaces "cernées").
4)- après avoir "corrigé comme suggéré en points 1 à 3, tout sera réalisable très rapidement mais si (et seulement si) le fond sur lequel sont dessinées toutes les lignes de ce graphique est d'une couleur parfaitement unie.
Voilà voilà ...

Toutes mes réponses sont sur la base d'un constat (ton graphique). Il est assez vraisemblable que le problème pourrait être traité très différemment, mais alors à la construction même du graphique (dessin de toutes les courbes) et non une fois ces dessins terminés (sur constat). Je dis bien "vraisemblable" car nous ignorons tout des opérations (et de l'ordre de leur accomplissement) conduites pour parvenir à ce "constat". Or, ta question est celle de la résolution "sur constat" (et encore, d'un "constat" qui n'a cessé d'être précisé différemment depuis ton premier message).

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 juil. 2013 à 07:14
Pour être parfaitement précis en ce qui concerne mon dernier paragraphe (à la construction et son sur constat) :
Tout serait extrêmement facilité si les choses étaient dessinées dans cet ordre :
1) dessin (sans aucune cassure ni "trou") des seules deux sinusoïdes encadrant la sinusoïde centrale)
2) remplissage de la zone "centrale" ainsi parfaitement délimitée
3) dessin de la sinusoïde centrale (et cette fois-ci en pointillé ou non, peu importe alors)
4) dessin (en pointillé ou non, peu importerait alors) de toutes les autres lignes courbes.

Intervenir "sur constat" (ta question jusqu'à présent) est par contre plus fastidieux.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Maritime Messages postés 69 Date d'inscription dimanche 16 mars 2003 Statut Membre Dernière intervention 14 mars 2015 2
6 juil. 2013 à 07:24
Bonjour ucfoutu,

Tout ce que tu viens d’énumérer est faisable, si j'ai bien compris l'espace
a remplir doit être strictement étanche,
1- les deux courbes seront des lignes continues.
2- la courbe centrale sera en pointillé.
3- toutes les courbes qui traversent l'espace de remplissage seront en
pointillé.
4- fond parfaitement unie.

Voilà.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 juil. 2013 à 07:54
Bon...
Mets ceci dans la parie déclaration :
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function ExtFloodFill Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long, ByVal wFillType As Long) As Long


et ces instructions dans ton code, là où tu veux lancer ce "rouleau" :


Dim pinceau As Long
    pinceau = CreateSolidBrush(RGB(255, 0, 0))
    SelectObject Picture1.hdc, pinceau
    Picture1.ScaleMode = vbPixels
    ExtFloodFill Picture1.hdc, (Picture1.ScaleWidth / 2) - 10, 10, GetPixel(Picture1.hdc, (Picture1.ScaleWidth / 2) - 10, 10), 1
    DeleteObject pinceau


1) modifie à ta convenance RGB(255,0,0)... Mets la couleur de ton choix
2) modifie au besoin les -10 pixels et 10 pixels (que j'ai "estimés" à vue d'oeil) pour "tomber" assurément sur un point non dessiné de la zone entre tes deux sinusoïdes d'encadrement)
Et dis-moi...

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 juil. 2013 à 08:00
Et bien sûr : remplace Picture1 par le nom de TA pictureBox...


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
cs_Maritime Messages postés 69 Date d'inscription dimanche 16 mars 2003 Statut Membre Dernière intervention 14 mars 2015 2
6 juil. 2013 à 09:20
ucfoutu,

Tu m'as réglé un problème que je croyais insoluble.
Un grand merci pour ton aide et, surtout pour ta patience.



Maritime,
Amicalement.
0
cs_Maritime Messages postés 69 Date d'inscription dimanche 16 mars 2003 Statut Membre Dernière intervention 14 mars 2015 2
6 juil. 2013 à 09:24
J'avais oublié de te montrer le resultat que voici :
0
cs_Maritime Messages postés 69 Date d'inscription dimanche 16 mars 2003 Statut Membre Dernière intervention 14 mars 2015 2
6 juil. 2013 à 09:29
J'avais oublié de te montrer le résultat que voici :
0
cs_Maritime Messages postés 69 Date d'inscription dimanche 16 mars 2003 Statut Membre Dernière intervention 14 mars 2015 2
6 juil. 2013 à 13:02
Très bien, J'ai cliqué le tag "réponse acceptée", merci.
0
Rejoignez-nous