J'essaie d'aligner un Label
et un NumericUpDown
par leurs lignes de base de texte. Je le fais en code, plutôt que le concepteur. Comment obtenir la position de la ligne de base du texte?Comment puis-je obtenir la position de la ligne de base de texte dans une étiquette et un NumericUpDown?
10
A
Répondre
13
// pour rendre le texte avec la ligne de base aux coordonnées (pt.X, pt.Y):
Font myFont = Label1.Font;
FontFamily ff = myFont.FontFamily;
float lineSpace = ff.GetLineSpacing(myFont.Style);
float ascent = ff.GetCellAscent(myFont.Style);
float baseline = myFont.GetHeight(ev.Graphics) * ascent/lineSpace;
PointF renderPt = new PointF(pt.X, pt.Y - baseline));
ev.Graphics.DrawString("Render this string", myFont, textBrush, renderPt);
2
Pour le contrôle de l'étiquette, vous pouvez obtenir la position du fond du texte ainsi:
En supposant que le .TextAlign est réglé sur TopLeft ou TopCenter ou TopRight, le fond du texte dans le contrôle de l'étiquette peut être trouvé par cette méthode:
dim btmOfText as single
btmOfText = Label1.Font.GetHeight + Label1.Top
la méthode .GetHeight retourne la hauteur en pixels de la police en cours utilisé par l'étiquette.
Si le .TextAlign est Middle ou Bottom, vous devez effectuer un calcul légèrement plus complexe.
Cette même méthode fonctionnera également avec le contrôle NumericUpDown.
Questions connexes
- 1. Obtenir la position du curseur dans une zone de texte
- 2. Obtenir la position de pdfptable
- 3. Obtenir la position de JPopupMenu
- 4. Comment puis-je obtenir la position nième ligne de la table sans utiliser de limite?
- 5. Comment obtenir la position de l'élément
- 6. Obtenir la position de la roue PhysX
- 7. Comment convertir une position de la souris en une position de caractère dans un JEditorPane en Java Swing
- 8. Ombre de texte pour la position: statique
- 9. Obtenir une partie de la ligne MySql?
- 10. Comment obtenir la position dans une instruction select
- 11. Afficher la ligne actuelle et le numéro de colonne pour une zone de texte
- 12. Comment forcer un saut de ligne entre deux mots dans une étiquette déclarée par XAML?
- 13. Comment trouver la position d'un curseur dans une zone de texte? C#
- 14. comment insérer ligne par ligne de contenu dans un fichier texte dans une base de données mysql?
- 15. Étant donné une date, comment obtenir la date suivante et précédente dans la base de données
- 16. Obtenir la position d'une colonne de la grille
- 17. Comment obtenir la position d'un élément dans un StackPanel?
- 18. Ajouter un élément au-dessus de la zone de texte sans modifier la position de la zone de texte
- 19. VB.NET Lire la ligne actuelle dans une zone de texte?
- 20. Cocoa: Obtenir la position actuelle de la souris sur l'écran
- 21. SQL Obtenir un caractère à la position
- 22. obtenir la valeur de la zone de texte de php
- 23. cURL- comment obtenir une réponse via la ligne de commande?
- 24. Comment modifier la position de ligne du mode virtuel DataGridView?
- 25. Comment internationalisez-vous le texte dans la base de données?
- 26. Afficher la position affichée de la ligne DataGridView
- 27. UILabel - comment changer la position du texte
- 28. Obtenir la position de la souris pendant le glisser-déposer
- 29. Comment obtenir la position d'un élément enfant
- 30. Modifier la position de la validation de la zone de texte
GetHeight ne retourne pas la position de la ligne de base de la police, mais la position du haut de la ligne suivante. Les polices Windoze sont vissées de cette manière. Il n'y a pas de réponse simple ici. – dar7yl
J'ai remarqué que Stewbob était mécontent de mon downvoting de sa réponse, et a réagi en downvotant un certain nombre de mes messages. Je prends la haute route ici et ne pas escalader cela dans une guerre totale. – dar7yl
@ dar7yl ... Umm ... qui êtes-vous? Je vois que vous avez des commentaires à mon poste, mais je ne comprends pas le dernier? – Stewbob