Question

J'ai une application GUI Win32 qui utilise GDI havily. Il doit dessiner le texte sur une image bitmap aux coordonnées spécifiées, puis l'effacer et remplacer le bitmap d'origine.

Procédez comme suit:

  • sélectionnez la police (GetStockObject (DEFAULT_GUI_FONT)), une brosse, d'autres choses dans le contexte de l'appareil
  • appelez GetTextExtentPoint32 () pour calculer la taille du texte
  • ayant maintenant le point de départ du texte que je peux calculer le rectangle de texte attendu et le stocker
  • appelez TextOut () pour le même contexte de l'appareil avec le même point de départ et le même texte

et plus tard restaurer le bitmap pour le rectangle du magasin.

Il fonctionne très bien quand ClearType anticrénelage est éteint. Mais avec ClearType la taille retournée par GetTextExtentPoint32 () est légèrement inférieure à la taille réellement occupée par le texte quand TextOut () est appelée. Alors, quand je ramènerai plus tard, le bitmap d'origine quelques petites bandes du texte restent en place et je artefacts.

Y at-il remède à cela sans désactiver ClearType?

Était-ce utile?

La solution

Vous pouvez également essayer DrawText avec DT_CALCRECT pour calculer la taille de la chaîne. Peut-être que cela fonctionne mieux.

Aussi, vous pouvez alors écrire la chaîne avec DrawText dans un rectangle avec les dimensions égales à celle que vous obtenez avec DT_CALCRECT et il coupera le texte dans le cas où il est un peu plus grand.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top