INFO : calcul de la hauteur logique et taille de point d'une police

Traductions disponibles Traductions disponibles
Numéro d'article: 74299 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Résumé

Pour créer une police dans l'environnement de graphique de Microsoft Windows ne donnée que la taille du requis point, une application doit calculer la hauteur logique de la police, étant donné que les fonctions CreateFont() et CreateFontIndirect() utilisent unités logiques pour spécifier la hauteur.

Pour décrire une police à l'utilisateur, une application peut calculer point taille une police, donnée sa hauteur. Cet article fournit les formules requis pour effectuer ces calculs pour le mode de mise en correspondance MM_TEXT. Vous devrez dériver une nouvelle équation pour calculer la taille de police en un autre mode de mappage.

Plus d'informations

Pour calculer la hauteur logique, utilisez la formule suivante :
                                Point Size * LOGPIXELSY
   height = Internal Leading + -------------------------
                                          72
				
LOGPIXELSY est le nombre de pixels contenus dans un pouce logique sur le périphérique. Cette valeur est obtenue en appelant la fonction GetDeviceCaps() à l'index LOGPIXELSY. La valeur 72 est importante car un pouce (2,54 cm) contient des 72 points.

Le problème avec ce calcul est qu'il n'est aucune méthode pour déterminer le début interne de la police car elle n'a encore été créée. Pour contourner ce problème, appliquez la variante de la formule suivante :
            -(Point Size * LOGPIXELSY)
   height = --------------------------
                         72
				
cette formule peut également s'écrire comme suit :
   plf->lfHeight = -MulDiv (nPtSize, GetDeviceCaps (hdc, LOGPIXELSY), 72);
				
lorsqu'une application appelle l' CreateFont() ou CreateFontIndirect() fonctionne et spécifie une valeur négative pour le paramètre de hauteur, le mappeur de police fournit le plus proche équivalent pour la hauteur de caractère plutôt que la hauteur de cellule. La différence entre la hauteur de cellule et la hauteur de caractère est les espaces d'en-tête interne, comme indiqué par le schéma suivant :
   ----------  <------------------------------
   |        |           |- Internal Leading  |
   | |   |  |  <---------                    |
   | |   |  |        |                       |- Cell Height
   | |---|  |        |- Character Height     |
   | |   |  |        |                       |
   | |   |  |        |                       |
   ----------  <------------------------------
				
la formule suivante calcule la taille d'une police :
                (Height - Internal Leading) * 72
   Point Size = --------------------------------
                           LOGPIXELSY
				
valeurs la hauteur et interne début proviennent de la structure de données TEXTMETRIC . La valeur LOGPIXELSY est obtenue à partir de la fonction GetDeviceCaps comme indiqué ci-dessus.

Arrondie le calculé point taille à l'entier le plus proche. La fonction Windows MulDiv() arrondit son résultat et est un choix excellent pour effectuer le calcul précédent.

Propriétés

Numéro d'article: 74299 - Dernière mise à jour: mardi 21 novembre 2006 - Version: 3.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Windows Software Development Kit 3.1
  • Microsoft Win32 Application Programming Interface sur le système suivant
    • Microsoft Windows NT Server 3.5
    • Microsoft Windows NT Server 3.51
    • Microsoft Windows NT Server 4.0 Standard Edition
    • Microsoft Windows NT Workstation 3.5
    • Microsoft Windows NT Workstation 3.51
    • Microsoft Windows NT Workstation 4.0 Édition Développeur
Mots-clés : 
kbmt kbinfo KB74299 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 74299
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com