CombineRgn

Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
- - Dernière réponse : 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


--
Afficher la suite 

3 réponses

Messages postés
1887
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
20 juin 2019
60
0
Merci
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 ?
Commenter la réponse de vb95
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
2
0
Merci
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
--
vb95
Messages postés
1887
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
20 juin 2019
60 -
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
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
1887
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
20 juin 2019
-
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..
Commenter la réponse de cs_cheyenne
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
0
Merci
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 ?
vb95
Messages postés
1887
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
20 juin 2019
60 -
Bonjour ucfoutu !
Ta remarque est justifiée : une image serait plus "parlante" !
cs_cheyenne
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
2 -
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..
Commenter la réponse de ucfoutu