Ajouter une flèche à une textbox [Résolu]

Messages postés
559
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
14 novembre 2019
- - Dernière réponse : Herve_be
Messages postés
559
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
14 novembre 2019
- 14 nov. 2019 à 14:31
Bonjour,
Lorsqu'on passe la souris sur un graphique, une légende (une text box en fait) contenant les caractéristiques du point survolé s'affiche, ceci fonctionne très bien, voir cette animation



Suivant la position du point la légende peut s'afficher au-dessus ou en dessous, à gauche ou à droite du point.
Je voudrais ajouter "quelque chose" qui indique quel angle de la text box pointe sur le point.
Une idée ?
Merci
Afficher la suite 

6 réponses

Messages postés
132
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
14 novembre 2019
2
0
Merci
Salut Hervé,
En deux mots, tu veux mettre en surbrillance la position du point sélectionné par la textbox.
Rapidement, je te recommanderai d'utiliser une image, envoyer ton text dans celle-ci, est allumer ou placer un marqueur sur le point concerné.
Tu peux aussi utiliser un objet SHARP (cercle) que tu déplacera dans ton image graphique en l'allumant ou en la cachant.
Mais, comme toujours, il y aura des problèmes de recouvrement en couches de recouvrement, qui masque les sharps non prioritaires face au images/textbox qui s'affichent toujours au premier plan.
Tu aura donc ton sharp partiellement masqué par ton textbox.
Sinon, il te faudra gérer l'ensemble en mode graphique.

Tu peux utiliser un cercle, mais aussi des "Line"s en forme de croix… rectangle...sharp carré.
Commenter la réponse de JeuDuTaquin
Messages postés
559
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
14 novembre 2019
2
0
Merci
Bonjour et merci pour ta réponse,
La solution est en effet d'utiliser une Picturebox au lieu d'une textbox.
Je peux ainsi facilement dessiner une flèche dans la Picturebox dirigée vers le point concerné.

Mais j'ai alors un autre problème que je ne comprends pas, j'ai pourtant déjà pas mal travaillé avec des picturebox !
voici le code, Legend est la picturebox avec ScaleMode = 3 - Pixel
Htext = le texte à imprimer sur la légende
Legend.CurrentX = 0: Legend.CurrentY = 0
Legend.Print Htext

Legend.Width = Legend.TextWidth(Htext)
Legend.Height = Legend.Textheight(Htext)
mais la picturebox est moins large et moins haute que le texte !
Commenter la réponse de Herve_be
Messages postés
132
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
14 novembre 2019
2
0
Merci
Salut Hervé,

Tu dois être avec une image en apparence "3D", ce qui te mange l'épaisseur des bords.
Legend.Width = Legend.TextWidth(Htext) + 110
Legend.Height = Legend.TextHeight(Htext) + 110

… ajoute la largueur des bords en 3D.

Amuse-toi bien.
Commenter la réponse de JeuDuTaquin
Messages postés
559
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
14 novembre 2019
2
0
Merci
Merci mais la différence est beaucoup plus importante que l'épaisseur des bords.
Par exemple si Htext = "Salinité [ppt] : 34,7 (34,2)"
je ne vois que "Salinité [ppt] : 34,7 ("
Commenter la réponse de Herve_be
Messages postés
132
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
14 novembre 2019
2
0
Merci
Salut Hervé,
Donc, tu es en Scalemode=3 (pixels)

Legend.Width = Legend.TextWidth(Htext) * Screen.TwipsPerPixelX + 110
Legend.Height = Legend.TextHeight(Htext) * Screen.TwipsPerPixelY + 110

;)
Commenter la réponse de JeuDuTaquin
Messages postés
559
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
14 novembre 2019
2
0
Merci
Merci mais ce n'est pas ça
parce qu'avec Legend.TextWidth(Htext) * Screen.TwipsPerPixelX j'obtiens une picturebox beaucoup trop grande.

Par contre j'ai trouvé : Legend.TextWidth(Htext) se réfère à ScaleWidth
alors que Width est en twips
donc j'ai défini le même ScaleWidth que le graph sur lequel j'affiche ma légende ce qui met ScaleMode à zéro.
Commenter la réponse de Herve_be