INFO: Berekening van de logische hoogte en de puntgrootte van een lettertype

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 74299 - Bekijk de producten waarop dit artikel van toepassing is.
Alles uitklappen | Alles samenvouwen

Samenvatting

Maken van een lettertype in de grafische omgeving van Microsoft Windows opgegeven alleen de vereiste puntgrootte een toepassing moet de logische hoogte berekenen het lettertype omdat de functies CreateFont() en CreateFontIndirect() logische eenheden gebruiken om de hoogte opgeven.

Beschrijving van een lettertype voor de gebruiker kunt een toepassing een lettertype punt berekenen grootte, gezien de hoogte. In dit artikel worden de formules vereist Deze berekeningen voor de modus MM_TEXT toewijzen. U moet een nieuwe vergelijking voor het berekenen van de grootte van het lettertype in een andere toewijzing modus afgeleid.

Meer informatie

Met de volgende formule berekent u de logische hoogte:
                                Point Size * LOGPIXELSY
   height = Internal Leading + -------------------------
                                          72
				
LOGPIXELSY is het aantal pixels in een logische inch op de apparaat. Deze waarde wordt verkregen door het aanroepen van de functie GetDeviceCaps() met de LOGPIXELSY-index. De waarde van 72 is belangrijk omdat één inch 72 punten bevat.

Het probleem met deze berekening is dat er geen methode om te bepalen de interne toonaangevende voor het lettertype omdat nog niet is gemaakt. Naar Deze problemen omzeilen, gebruikt u de volgende variatie van de formule:
            -(Point Size * LOGPIXELSY)
   height = --------------------------
                         72
				
Deze formule kan ook geschreven worden als volgt:
   plf->lfHeight = -MulDiv (nPtSize, GetDeviceCaps (hdc, LOGPIXELSY), 72);
				
Wanneer een toepassing de CreateFont() of CreateFontIndirect() -functies aanroept en een negatieve voor de parameter height waarde, biedt het lettertype mapper de dichtstbijzijnde overeenkomst in voor de tekenhoogte van het in plaats van op de celhoogte van de. Het verschil tussen de celhoogte van de en de tekenhoogte van het is de interne voorloopspaties, zoals aangetoond door het volgende diagram:
   ----------  <------------------------------
   |        |           |- Internal Leading  |
   | |   |  |  <---------                    |
   | |   |  |        |                       |- Cell Height
   | |---|  |        |- Character Height     |
   | |   |  |        |                       |
   | |   |  |        |                       |
   ----------  <------------------------------
				
De volgende formule berekent de puntgrootte van een lettertype:
                (Height - Internal Leading) * 72
   Point Size = --------------------------------
                           LOGPIXELSY
				
De waarden voor hoogte en interne toonaangevende zijn verkregen uit de TEXTMETRIC -gegevensstructuur. De waarde LOGPIXELSY wordt verkregen uit de GetDeviceCaps -functie als hierboven beschreven.

Ronde de berekende tekengrootte op het dichtstbijzijnde gehele getal. De Windows De functie MulDiv() wordt het resultaat afgerond en is een uitstekende keuze voor de vorige berekeningen uitvoeren.

Eigenschappen

Artikel ID: 74299 - Laatste beoordeling: zaterdag 9 juni 2012 - Wijziging: 4.0
De informatie in dit artikel is van toepassing op:
  • Microsoft Windows Software Development Kit 3.1
  • Microsoft Win32-API op de volgende platformen
    • 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 Developer Edition
Trefwoorden: 
kbinfo kbmt KB74299 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende: 74299

Geef ons feedback

 

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