CombineRgn

cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 - 18 janv. 2016 à 20:10
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 - 19 janv. 2016 à 19:59
Bonjour,

J'ai deux cercles concentriques soit un petit dans un plus grand avec le même centre. Je cherche en utilisant les régions à ne garder que l'espace compris entre le plus petit et le plus grand.
Le problème est qu'avec les modes de combinaison cela ne marche pas puisqu'il faut qu'au moins l'une des deux régions soit en partie à l'extérieur de l'autre.
Avez-vous une solution ? Merci d'avance.

Cordialement


--

3 réponses

vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
18 janv. 2016 à 21:07
Bonjour
Somme toute c'est la couronne qui t'intéresse !
On est plus dans la géométrie que la programmation !
Quel est le but de ceci ?
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
18 janv. 2016 à 23:52
Bonsoir vb95

Voici le but : je fini de programmer un logiciel basé sur la mécanique céleste. Les horaires des levers et couchers des planètes sont vérifiés et s'avèrent justes. J'en suis au stade la finition de l'interface que je veux esthétique. Les levers et couchers sont indiqués par des aiguilles dans un cadran de 24 heures. Afin de faire "plus joli" dans cette couronne j'ai fait un dégradé de couleur, par exemple pour le soleil, allant du jaune au lever à l'orange foncé pour le coucher. D4ou la nécessité d'avoir une région de cette couronne afin de l'effacer rapidement avec FillRgn.
Car non seulement on a les paramètres du moment mpais on peut auusi faire une animation "temporelle" d'ou la néceesité de traiter rapidement les graphiques. Voilà, j'ai été un peu long... mais comme tu voulais savoir...

Cordialement
--
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
19 janv. 2016 à 00:57
si je comprends bien le couronne représente 24 heures et sert de fonds à une horloge ! du lever au coucher du soleil tu fais un dégradé du jaune le matin vers l'orange le soir !
Cela ne doit pas être facile à programmer mais si c'est réussi le rendu doit être chouette ! Si en plus tu arrives à faire une transition en douceur entre la nuit et le lever du soleil et de même entre le coucher et la nuit cela serait le top !
Maintenant pour délimiter les régions dans la couronne je me demande si en te servant de la position de l'aiguille on ne peut pas déterminer un trait entre les 2 cercles ! Si tu places un trait sur 8 heures et un autre sur 9 heures tu délimites une région d'une heure entre 8 et 9 ! tu pourrais ainsi avoir 24 régions ( ton horloge est sûrement sur 24 heures je pense).
Autre piste si ton dégradé couvre toute une journée du levée au coucher du soleil ! tu places un trait à 7 heures du matin par exemple et un autre à 8 heures du soir ( lever et cocher du soleil par exemple)
Cela te donne ta région
Je vais me documenter sur Fillrgn ( cela ne me dit rien personnellement)
Bonne soirée à toi
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2 > vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024
19 janv. 2016 à 12:53
Oui c'est bien une horloge sur 24 heures avec 12 h en haut et 24 h en bas, ce qui d'ailleurs me complique un peu ta tâche. Pour la question du dégradé ce n'est pas si difficile que cela. Il suffit de calculer la longueur de l'arc de l'angle compris entre le lever et le coucher. Pour le soleil je passe du jaune à l'orangé en faisant varier uniquement le vert de la façon suivante : je divise 128 par la longueur de l'arc que je mets dans la variable qV. Au départ j'ai le jaune avec R et V à 255 et B = 0. Puis dans la boucle à chaque le pas je décrémente 255 de qV * n qui augmente de1 à chaque et au final J = ± 127 ce qui me donne l'orangé. Oui j'ai une transition de couleurs entre le jour et la nuit.uniquement pour le soleil. Je passe de l'orangé foncé au bleu nuit jusqu'à l'heure comprise à la moitié du coucher au lever. Puis pour le reste du bleu nuit au jaune jusqu'au lever. Pour la luneil faut raisonner diérement puisqu'elle peut très bien être levée dans la journée.
FillRgn est une fonction qui permet de remplir une région avec une ccouleur assignée à une "brush". Quand je parle de régions, c'est en relation avec les fonctions CreateEllipticRgn, CreatePolygonRgn et autres..
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 janv. 2016 à 10:03
Bonjour à tous les deux,
Je ne parviens pas, sans connaître le résultat exact recherché, à déterminer la meilleure manière de s'y prendre.
Pourrais-tu nous mettre une image de ce que tu souhaiterais obtenir ?
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
19 janv. 2016 à 11:53
Bonjour ucfoutu !
Ta remarque est justifiée : une image serait plus "parlante" !
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
19 janv. 2016 à 19:59
En fait c'est simple. Je souhaite effacer, à la demande, la couronne qui se trouve entre le petit et le grand cercle.
Avec la fonction CombineRgn cela ne peut pas se faire, j'efface donc la couronne par des cercles dont le rayon le rayon diminue jusquà atteindre le cercle plus petit..
Il est dommage qu'avec la fonction CombineRgn que l'on ne puisse créer une région à la condition exclusive que l'une des autres régions soit "à cheval "sur l'autre. Si tu as un carré entièrement contenu dans une forme quelconque tu ne peux pas créer une région qui seta la différence entre le carré et la forme..
0
Rejoignez-nous