2010-04-25 17 views
1

Lors de l'utilisation de TextRenderer.DrawText(), que fait réellement le flag TextFormatFlags.Internal?Lors de l'utilisation de DrawText, que fait TextFormatFlags.Internal (a.k.a. DT_INTERNAL)?

Équivalemment, qu'est-ce que la définition du drapeau DT_INTERNAL à la fonction DrawTextEx Win32() faire?

Plus précisément, quand dois-je mettre le drapeau et quand dois-je régler pas?

La documentation dit: « Utilise la police du système pour calculer les données de texte », mais je ne suis pas tout à fait sûr de ce que cela signifie. J'ai fait quelques tests limités et le réglage du drapeau semble changer la façon dont la police est rendue en utilisant une petite taille de police, mais ne semble pas faire de différence quand on utilise une grande taille de police.

Répondre

1

Cela signifie que peu importe ce que vous utilisez réellement la police, il fait ses calculs comme si vous utilisiez la police système à la place. Supposons, par exemple, que votre système lui attribue 12 points. Si vous utilisez une police de 30 points avec l'indicateur DT_INTERNAL, chaque ligne ne sera suffisamment avancée que pour la police système (12 points) et non pour votre police de 30 points. Chaque ligne de texte chevauchera donc la précédente.

Le « interne » désigne essentiellement « à usage interne de Windows uniquement » - Je suis raisonnablement certain que je ne l'ai jamais utilisé ce drapeau dans un code réel.

+1

FWIW, j'ai un sous-élément propriétaire tiré dans un ListView, et je trouve que je devais utiliser DT_INTERNAL afin d'obtenir mon texte pour ressembler exactement le texte élaboré par le ListView lui-même. –