J'essaie de mesurer la taille d'un personnage et je ne peux pas obtenir le bon résultat. Nous utilisons DrawText avec l'indicateur DT_CALCRECT pour mesurer les chaînes, et cela semble fonctionner assez bien (pour être juste, nous ne l'avons pas testé pour des mesures parfaites).Windows/GDI- mesure la taille d'un caractère de police (Marlett)
Cependant j'essaie maintenant de mesurer un seul caractère, le symbole 'x' dans Marlett pour dessiner un bouton de fermeture, mais il ne veut vraiment pas me dire la taille réelle du personnage. Il me dit que le personnage est 8x8 quand c'est vraiment un 6x5, et le personnage est alors légèrement décalé par rapport à l'endroit où je le demande. En ce qui concerne la hauteur, je suppose qu'il retourne la hauteur du caractère pour cette police (étant la même pour tous les caractères, la même chose pour toutes les polices). Pour la largeur cependant, il semble y avoir un espace entre les caractères, ce qui ne semble pas être le cas avec d'autres polices (j'ai essayé quelques caractères dans Arial). Dans Marlett, tous les caractères testés semblent avoir la même largeur.
Est-ce qu'il est possible de savoir quel sera l'espacement supplémentaire autour d'un personnage, donc je peux centrer le 'x' dans une case?
N'essayez pas de le faire vous-même. Utilisez à la place [DrawThemeBackground] (https://msdn.microsoft.com/en-us/library/windows/desktop/bb773289.aspx) et appelez [GetThemeBackgroundExtent] (https://msdn.microsoft.com/fr-fr /library/windows/desktop/bb773380.aspx) pour interroger la taille requise. – IInspectable
Les métriques de police sont ridiculement alambiquées. Même si vous extrayez le contour du glyphe, les indications TrueType et l'ajustement de la grille de pixels risquent de gâcher votre journée. Si vous ne voulez pas de surprises, vous devez utiliser un bitmap. Vous aurez besoin d'un couple pour gérer dpiAwareness. –