Ajouter une flèche à une textbox

Résolu
Herve_be Messages postés 1025 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 27 mai 2024 - 9 nov. 2019 à 17:50
Herve_be Messages postés 1025 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 27 mai 2024 - 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

6 réponses

JeuDuTaquin Messages postés 249 Date d'inscription mardi 4 juillet 2017 Statut Membre Dernière intervention 31 mai 2023 7
10 nov. 2019 à 14:47
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é.
0
Herve_be Messages postés 1025 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 27 mai 2024 2
11 nov. 2019 à 10:26
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 !
0
JeuDuTaquin Messages postés 249 Date d'inscription mardi 4 juillet 2017 Statut Membre Dernière intervention 31 mai 2023 7
11 nov. 2019 à 17:46
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.
0
Herve_be Messages postés 1025 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 27 mai 2024 2
11 nov. 2019 à 18:06
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 ("
0

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

Posez votre question
JeuDuTaquin Messages postés 249 Date d'inscription mardi 4 juillet 2017 Statut Membre Dernière intervention 31 mai 2023 7
11 nov. 2019 à 19:32
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

;)
0
Herve_be Messages postés 1025 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 27 mai 2024 2
14 nov. 2019 à 14:31
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.
0
Rejoignez-nous