INFO: Výpočet logická výška a veľkosť písma

Preklady článku Preklady článku
ID článku: 74299 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko

SUHRN

V Microsoft Windows grafické prostredie uvedené len vytvoriť písmo požadované veľkosť, žiadosť musí vypočítať logická výška písma, pretože CreateFont() a CreateFontIndirect() funkcie použiť logických jednotiek na určenie výšky.

Opísať písmo užívateľovi, žiadosť možno vypočítať písmo bod jej výška danej veľkosti. Tento článok poskytuje vzorce povinní Tieto výpočty pre mapovanie režim MM_TEXT. Budete musieť odvodiť novú rovnicu vypočítať veľkosť písma v inom mapovanie režime.

DALSIE INFORMACIE

Logická výška vypočítate pomocou vzorca:
                                Point Size * LOGPIXELSY
   height = Internal Leading + -------------------------
                                          72
				
LOGPIXELSY je počet pixelov na logický palec na zariadenie. Táto hodnota sa získa volaním GetDeviceCaps() Funkcia LOGPIXELSY indexu. Hodnota 72 je významné, pretože jeden palec obsahuje 72 bodov.

Problém s tohto výpočtu je, že neexistuje metóda na určenie vnútorné vedie pre písmo pretože ešte nebol vytvorený. Vykonaná akcia obísť tento problém, použite táto zmena vzorca:
            -(Point Size * LOGPIXELSY)
   height = --------------------------
                         72
				
Tento vzorec môže tiež písať takto:
   plf->lfHeight = -MulDiv (nPtSize, GetDeviceCaps (hdc, LOGPIXELSY), 72);
				
Keď žiadosť vyzýva CreateFont() alebo CreateFontIndirect() funkcie a určuje zápornú hodnotu pre parameter výška písma mapper poskytuje najbližšie zápas pre výšku charakter skôr ako výška bunky. Rozdiel medzi výška bunky a výška znaku je vnútorného popredných, čo dokazuje uvedený diagram:
   ----------  <------------------------------
   |        |           |- Internal Leading  |
   | |   |  |  <---------                    |
   | |   |  |        |                       |- Cell Height
   | |---|  |        |- Character Height     |
   | |   |  |        |                       |
   | |   |  |        |                       |
   ----------  <------------------------------
				
Nasledujúci vzorec vypočíta veľkosť písma:
                (Height - Internal Leading) * 72
   Point Size = --------------------------------
                           LOGPIXELSY
				
Výška a vnútorného vedúce hodnoty sú získané zTEXTMETRIC štruktúra údajov. LOGPIXELSY hodnota sa získa zGetDeviceCaps funkcie ako je načrtnuté vyššie.

Kolo vypočítanú veľkosť bodu na najbližšie celé číslo. OknáMulDiv() Funkcia zaokrúhli jeho výsledok a je vynikajúcou voľbou vykonať predchádzajúci výpočet.

Vlastnosti

ID článku: 74299 - Posledná kontrola: 10. októbra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft Windows Software Development Kit 3.1
  • Microsoft Win32 Application Programming Interface, pri použití s produktom:
    • 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
Kľúčové slová: 
kbinfo kbmt KB74299 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:74299

Odošlite odozvu

 

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