INFORMAZIONI: Calcolo l'altezza logica e la dimensione di punto di un tipo di carattere

Traduzione articoli Traduzione articoli
Identificativo articolo: 74299 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

Sommario

Per creare un tipo di carattere nell'ambiente di grafica di Microsoft Windows specificato solo la dimensione richiesta, è necessario che un'applicazione calcolare l'altezza del carattere logico perché le funzioni CreateFont() e CreateFontIndirect() consente di utilizzare le unità logiche per specificare l'altezza.

Per descrivere un tipo di carattere per l'utente, un'applicazione può calcolare la dimensione in punti del tipo di carattere, dato l'altezza. Questo articolo vengono fornite le formule necessari per eseguire tali calcoli per la modalità di mapping MM_TEXT. Sarà necessario derivare una nuova equazione per calcolare la dimensione del tipo di carattere in un'altra modalità di mapping.

Informazioni

Per calcolare l'altezza logica, utilizzare la seguente formula:
                                Point Size * LOGPIXELSY
   height = Internal Leading + -------------------------
                                          72
				
LOGPIXELSY è il numero di pixel contenuti in un pollice logico sul dispositivo. Questo valore è ottenuto chiamando la funzione GetDeviceCaps() con l'indice LOGPIXELSY. Il valore 72 è significativo in quanto un centimetro contiene 72 punti.

Il problema con questo calcolo è che non esiste un metodo per determinare l'iniziale interno per il tipo di carattere poiché non è ancora stato creato. Per ovviare a questa difficoltà, utilizzare la seguente variazione della formula:
            -(Point Size * LOGPIXELSY)
   height = --------------------------
                         72
				
questa formula può essere scritto anche nel modo seguente:
   plf->lfHeight = -MulDiv (nPtSize, GetDeviceCaps (hdc, LOGPIXELSY), 72);
				
quando un'applicazione chiama il CreateFont() o CreateFontIndirect() funzioni e specifica un valore negativo per il parametro di altezza, il mapper del tipo di carattere fornisce la corrispondenza più simile per l'altezza del carattere, anziché l'altezza della cella. La differenza tra l'altezza della cella e l'altezza di carattere è iniziali interni, come illustrato nella figura riportata di seguito:
   ----------  <------------------------------
   |        |           |- Internal Leading  |
   | |   |  |  <---------                    |
   | |   |  |        |                       |- Cell Height
   | |---|  |        |- Character Height     |
   | |   |  |        |                       |
   | |   |  |        |                       |
   ----------  <------------------------------
				
la seguente formula calcola la dimensione del punto di un tipo di carattere:
                (Height - Internal Leading) * 72
   Point Size = --------------------------------
                           LOGPIXELSY
				
i valori di altezza il e iniziale interno vengono ottenuti dalla struttura di dati TEXTMETRIC . Il valore LOGPIXELSY è ottenuto dalla funzione GetDeviceCaps , come indicato in precedenza.

Round calcolata dimensione in punti all'intero più vicino. La funzione di Windows MulDiv() Arrotonda il risultato e rappresenta una scelta eccellente per eseguire il calcolo precedente.

Proprietà

Identificativo articolo: 74299 - Ultima modifica: martedì 21 novembre 2006 - Revisione: 3.2
Le informazioni in questo articolo si applicano a:
  • Microsoft Windows Software Development Kit 3.1
  • Microsoft Win32 Application Programming Interface alle seguenti piattaforme
    • 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 Developer Edition
Chiavi: 
kbmt kbinfo KB74299 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 74299
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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