Classe CFont
Incapsula un tipo di carattere GDI (Graphics Device Interface) di Windows e fornisce funzioni membro per la modifica del tipo di carattere.
Sintassi
class CFont : public CGdiObject
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CFont::CFont |
Costruisce un oggetto CFont . |
Metodi pubblici
Nome | Descrizione |
---|---|
CFont::CreateFont |
Inizializza un oggetto CFont con le caratteristiche specificate. |
CFont::CreateFontIndirect |
Inizializza un CFont oggetto con le caratteristiche fornite in una LOGFONT struttura. |
CFont::CreatePointFont |
Inizializza un oggetto CFont con l'altezza specificata, misurata in decimi di punto e carattere tipografico. |
CFont::CreatePointFontIndirect |
Uguale a CreateFontIndirect ad eccezione del fatto che l'altezza del carattere viene misurata in decimi di un punto anziché in unità logiche. |
CFont::FromHandle |
Restituisce un puntatore a un CFont oggetto quando viene specificato un oggetto Windows HFONT . |
CFont::GetLogFont |
Riempie un oggetto LOGFONT con informazioni sul tipo di carattere logico associato all'oggetto CFont . |
Operatori pubblici
Nome | Descrizione |
---|---|
CFont::operator HFONT |
Restituisce l'handle del tipo di carattere GDI di Windows associato all'oggetto CFont . |
Osservazioni:
Per utilizzare un CFont
oggetto, costruire un CFont
oggetto e allegare un tipo di carattere di Windows con CreateFont
, CreateFontIndirect
, CreatePointFont
o CreatePointFontIndirect
e quindi utilizzare le funzioni membro dell'oggetto per modificare il tipo di carattere.
Le CreatePointFont
funzioni e CreatePointFontIndirect
sono spesso più facili da usare o CreateFontIndirect
CreateFont
poiché eseguono automaticamente la conversione per l'altezza del tipo di carattere da una dimensione punto a unità logiche.
Per altre informazioni su CFont
, vedere Oggetti grafici.
Gerarchia di ereditarietà
CFont
Requisiti
Intestazione: afxwin.h
CFont::CFont
Costruisce un oggetto CFont
.
CFont();
Osservazioni:
L'oggetto risultante deve essere inizializzato con CreateFont
, CreateFontIndirect
, CreatePointFont
o CreatePointFontIndirect
prima di poterlo usare.
Esempio
CFont font;
CFont::CreateFont
Inizializza un CFont
oggetto con le caratteristiche specificate.
BOOL CreateFont(
int nHeight,
int nWidth,
int nEscapement,
int nOrientation,
int nWeight,
BYTE bItalic,
BYTE bUnderline,
BYTE cStrikeOut,
BYTE nCharSet,
BYTE nOutPrecision,
BYTE nClipPrecision,
BYTE nQuality,
BYTE nPitchAndFamily,
LPCTSTR lpszFacename);
Parametri
nHeight
Specifica l'altezza desiderata (in unità logiche) del tipo di carattere. Per una descrizione, vedere il lfHeight
membro della LOGFONT
struttura in Windows SDK. Il valore assoluto di nHeight
non deve superare 16.384 unità di dispositivo dopo la conversione. Per tutti i confronti di altezza, il mapper cerca il tipo di carattere più grande che non supera le dimensioni richieste o il tipo di carattere più piccolo se tutti i tipi di carattere superano le dimensioni richieste.
nWidth
Specifica la larghezza media (in unità logiche) di caratteri nel tipo di carattere. Se nWidth
è 0, le proporzioni del dispositivo verranno confrontate con le proporzioni di digitalizzazione dei tipi di carattere disponibili per trovare la corrispondenza più vicina, determinata dal valore assoluto della differenza.
nEscapement
Specifica l'angolo , espresso in unità di misura di 0,1 gradi, tra il vettore di escape e l'asse x della superficie di visualizzazione. Il vettore di escape è la linea attraverso le origini del primo e dell'ultimo carattere su una riga. L'angolo viene misurato in senso antiorario dall'asse x. Per altre informazioni, vedere il lfEscapement
membro nella LOGFONT
struttura in Windows SDK.
nOrientation
Specifica l'angolo (in unità di 0,1 gradi) tra la linea di base di un carattere e l'asse x. L'angolo viene misurato in senso antiorario dall'asse x per i sistemi di coordinate in cui la direzione y è in basso e in senso orario dall'asse x per i sistemi di coordinate in cui la direzione y è rivolta verso l'alto.
nWeight
Specifica lo spessore del carattere (in pixel input penna per 1000). Per altre informazioni, vedere il lfWeight
membro nella LOGFONT
struttura in Windows SDK. I valori descritti sono approssimativi; l'aspetto effettivo dipende dal carattere tipografico. Alcuni tipi di carattere hanno solo FW_NORMAL
pesi , FW_REGULAR
e FW_BOLD
. Se FW_DONTCARE
viene specificato, viene utilizzato un peso predefinito.
bItalic
Specifica se il tipo di carattere è in corsivo.
bUnderline
Specifica se il tipo di carattere è sottolineato.
cStrikeOut
Specifica se i caratteri del tipo di carattere vengono evidenziati. Specifica un tipo di carattere barrato se impostato su un valore diverso da zero.
nCharSet
Specifica il set di caratteri del tipo di carattereVisualizza il lfCharSet
membro nella LOGFONT
struttura in Windows SDK per un elenco di valori.
Il set di caratteri OEM dipende dal sistema.
I tipi di carattere con altri set di caratteri possono esistere nel sistema. Un'applicazione che utilizza un tipo di carattere con un set di caratteri sconosciuto non deve tentare di tradurre o interpretare stringhe di cui eseguire il rendering con tale tipo di carattere. Le stringhe devono invece essere passate direttamente al driver di dispositivo di output.
Il mapper del tipo di carattere non usa il DEFAULT_CHARSET
valore . Un'applicazione può utilizzare questo valore per consentire al nome e alle dimensioni di un tipo di carattere di descrivere completamente il tipo di carattere logico. Se non esiste un tipo di carattere con il nome specificato, un tipo di carattere di qualsiasi set di caratteri può essere sostituito con il tipo di carattere specificato. Per evitare risultati imprevisti, le applicazioni devono usare il DEFAULT_CHARSET
valore con moderazione.
nOutPrecision
Specifica la precisione di output desiderata. La precisione di output definisce la precisione dell'output che deve corrispondere all'altezza, alla larghezza, all'orientamento dei caratteri, all'escape e all'inclinazione del tipo di carattere richiesto. Per un elenco di valori e altre informazioni, vedere il lfOutPrecision
membro nella LOGFONT
struttura in Windows SDK.
nClipPrecision
Specifica la precisione di ritaglio desiderata. La precisione di ritaglio definisce come ritagliare i caratteri parzialmente esterni all'area di ritaglio. Per un elenco di valori, vedere il lfClipPrecision
membro nella LOGFONT
struttura in Windows SDK.
Per usare un tipo di carattere di sola lettura incorporato, un'applicazione deve specificare CLIP_ENCAPSULATE
.
Per ottenere una rotazione coerente dei tipi di carattere del dispositivo, TrueType e vector, un'applicazione può usare l'operatore OR bit per bit (|
) per combinare il CLIP_LH_ANGLES
valore con qualsiasi altro nClipPrecision
valore. Se il CLIP_LH_ANGLES
bit è impostato, la rotazione per tutti i tipi di carattere dipende dal fatto che l'orientamento del sistema di coordinate sia sinistrorso o destrorso. Per altre informazioni sull'orientamento dei sistemi di coordinate, vedere la descrizione del nOrientation
parametro. Se CLIP_LH_ANGLES
non è impostato, i tipi di carattere del dispositivo ruotano sempre in senso antiorario, ma la rotazione di altri tipi di carattere dipende dall'orientamento del sistema di coordinate.
nQuality
Specifica la qualità di output del tipo di carattere, che definisce con quale attenzione l'GDI deve tentare di associare gli attributi del tipo di carattere logico a quelli di un tipo di carattere fisico effettivo. Per un elenco di valori, vedere il lfQuality
membro nella LOGFONT
struttura in Windows SDK.
nPitchAndFamily
Specifica il passo e la famiglia del tipo di carattere. Per un elenco di valori e altre informazioni, vedere il lfPitchAndFamily
membro nella LOGFONT
struttura in Windows SDK.
lpszFacename
Oggetto CString
o puntatore a una stringa con terminazione Null che specifica il nome del carattere tipografico del tipo di carattere. La lunghezza di questa stringa non deve superare i 30 caratteri. La funzione Windows EnumFontFamilies
può essere usata per enumerare tutti i tipi di carattere attualmente disponibili. Se lpszFacename
è NULL
, GDI usa un carattere tipografico indipendente dal dispositivo.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
Il tipo di carattere può essere successivamente selezionato come tipo di carattere per qualsiasi contesto di dispositivo.
La CreateFont
funzione non crea un nuovo tipo di carattere GDI di Windows. Seleziona semplicemente la corrispondenza più vicina dai tipi di carattere fisici disponibili per l'GDI.
Le applicazioni possono usare le impostazioni predefinite per la maggior parte dei parametri durante la creazione di un tipo di carattere logico. I parametri che devono essere sempre assegnati a valori specifici sono nHeight
e lpszFacename
. Se nHeight
e lpszFacename
non sono impostati dall'applicazione, il tipo di carattere logico creato è dipendente dal dispositivo.
Quando si termina con l'oggetto CFont
creato dalla CreateFont
funzione, usare CDC::SelectObject
per selezionare un tipo di carattere diverso nel contesto del dispositivo, quindi eliminare l'oggetto CFont
che non è più necessario.
Esempio
// The code fragment shows how to create a font object,
// select the font object into a DC (device context) for text
// drawing, and finally delete the font object.
// Initializes a CFont object with the specified characteristics.
CFont font;
VERIFY(font.CreateFont(
12, // nHeight
0, // nWidth
0, // nEscapement
0, // nOrientation
FW_NORMAL, // nWeight
FALSE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
ANSI_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
_T("Arial"))); // lpszFacename
// Do something with the font just created...
CClientDC dc(this);
CFont *def_font = dc.SelectObject(&font);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);
// Done with the font. Delete the font object.
font.DeleteObject();
CFont::CreateFontIndirect
Inizializza un CFont
oggetto con le caratteristiche fornite in una LOGFONT
struttura.
BOOL CreateFontIndirect(const LOGFONT* lpLogFont);
Parametri
lpLogFont
Punta a una LOGFONT
struttura che definisce le caratteristiche del tipo di carattere logico.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
Il tipo di carattere può essere successivamente selezionato come tipo di carattere corrente per qualsiasi dispositivo.
Questo tipo di carattere presenta le caratteristiche specificate nella LOGFONT
struttura. Quando il tipo di carattere viene selezionato utilizzando la CDC::SelectObject
funzione membro, il mapper del tipo di carattere GDI tenta di associare il tipo di carattere logico a un tipo di carattere fisico esistente. Se il mapper del tipo di carattere non riesce a trovare una corrispondenza esatta per il tipo di carattere logico, fornisce un tipo di carattere alternativo le cui caratteristiche corrispondono al maggior numero possibile di caratteristiche richieste.
Quando l'oggetto CFont
creato dalla CreateFontIndirect
funzione non è più necessario, usare CDC::SelectObject
per selezionare un tipo di carattere diverso nel contesto di dispositivo, quindi eliminare l'oggetto CFont
non più necessario.
Esempio
// The code fragment shows how to create a font object,
// select the font object into a DC (device context) for text
// drawing, and finally delete the font object.
// Initializes a CFont object with the characteristics given
// in a LOGFONT structure.
CFont font;
LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT)); // zero out structure
lf.lfHeight = 12; // request a 12-pixel-height font
_tcsncpy_s(lf.lfFaceName, LF_FACESIZE,
_T("Arial"), 7); // request a face name "Arial"
VERIFY(font.CreateFontIndirect(&lf)); // create the font
// Do something with the font just created...
CClientDC dc(this);
CFont *def_font = dc.SelectObject(&font);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);
// Done with the font. Delete the font object.
font.DeleteObject();
CFont::CreatePointFont
Questa funzione consente di creare un tipo di carattere con un carattere tipografico e una dimensione punto specificati.
BOOL CreatePointFont(
int nPointSize,
LPCTSTR lpszFaceName,
CDC* pDC = NULL);
Parametri
nPointSize
Altezza del carattere richiesta in decimi di un punto. Ad esempio, passare 120 per richiedere un tipo di carattere a 12 punti.
lpszFaceName
Oggetto CString
o puntatore a una stringa con terminazione Null che specifica il nome del carattere tipografico del tipo di carattere. La lunghezza di questa stringa non deve superare i 30 caratteri. La funzione Windows EnumFontFamilies
può essere usata per enumerare tutti i tipi di carattere attualmente disponibili. Se lpszFaceName
è NULL
, GDI usa un carattere tipografico indipendente dal dispositivo.
pDC
Puntatore all'oggetto CDC
da usare per convertire l'altezza in nPointSize
unità logiche. Se NULL
, per la conversione viene usato un contesto di dispositivo dello schermo.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario, 0.
Osservazioni:
Converte automaticamente l'altezza in nPointSize
unità logiche usando l'oggetto CDC a pDC
cui punta .
Al termine dell'operazione con l'oggetto CFont
creato dalla CreatePointFont
funzione, selezionare prima il tipo di carattere dal contesto del dispositivo, quindi eliminare l'oggetto CFont
.
Esempio
// The code fragment shows how to create a font object,
// select the font object into a DC (device context) for text
// drawing, and finally delete the font object.
CClientDC dc(this);
CFont font;
VERIFY(font.CreatePointFont(120, _T("Arial"), &dc));
// Do something with the font just created...
CFont *def_font = dc.SelectObject(&font);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);
// Done with the font. Delete the font object.
font.DeleteObject();
CFont::CreatePointFontIndirect
Questa funzione è identica CreateFontIndirect
a quella del fatto che il lfHeight
membro di LOGFONT
viene interpretato in decimi di un punto anziché in unità dispositivo.
BOOL CreatePointFontIndirect(
const LOGFONT* lpLogFont,
CDC* pDC = NULL);
Parametri
lpLogFont
Punta a una LOGFONT
struttura che definisce le caratteristiche del tipo di carattere logico. Il lfHeight
membro della LOGFONT
struttura viene misurato in decimi di un punto anziché in unità logiche. Ad esempio, impostare su lfHeight
120 per richiedere un tipo di carattere a 12 punti.
pDC
Puntatore all'oggetto CDC
da usare per convertire l'altezza in lfHeight
unità logiche. Se NULL
, per la conversione viene usato un contesto di dispositivo dello schermo.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario, 0.
Osservazioni:
Questa funzione converte automaticamente l'altezza in lfHeight
unità logiche usando l'oggetto CDC
a pDC
cui punta prima di passare la LOGFONT
struttura in Windows.
Al termine dell'operazione con l'oggetto CFont
creato dalla CreatePointFontIndirect
funzione, selezionare prima il tipo di carattere dal contesto del dispositivo, quindi eliminare l'oggetto CFont
.
Esempio
// The code fragment shows how to create a font object,
// select the font object into a DC (device context) for text
// drawing, and finally delete the font object.
LOGFONT lf;
// clear out structure.
memset(&lf, 0, sizeof(LOGFONT));
// request a 12-pixel-height font
lf.lfHeight = 120;
// request a face name "Arial".
_tcsncpy_s(lf.lfFaceName, LF_FACESIZE, _T("Arial"), 7);
CClientDC dc(this);
CFont font;
VERIFY(font.CreatePointFontIndirect(&lf, &dc));
// Do something with the font just created...
CFont *def_font = dc.SelectObject(&font);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);
// Done with the font. Delete the font object.
font.DeleteObject();
CFont::FromHandle
Restituisce un puntatore a un CFont
oggetto quando viene assegnato un HFONT
handle a un oggetto carattere GDI di Windows.
static CFont* PASCAL FromHandle(HFONT hFont);
Parametri
hFont
Handle HFONT
per un tipo di carattere di Windows.
Valore restituito
Puntatore a un CFont
oggetto se ha esito positivo; in caso contrario NULL
, .
Osservazioni:
Se un CFont
oggetto non è già collegato all'handle, viene creato e collegato un oggetto temporaneo CFont
. Questo oggetto temporaneo CFont
è valido solo fino alla successiva volta che l'applicazione ha tempo di inattività nel ciclo di eventi, in cui vengono eliminati tutti gli oggetti grafici temporanei. Un altro modo per dire questo è che l'oggetto temporaneo è valido solo durante l'elaborazione di un messaggio di finestra.
Esempio
// The code fragment shows how to create a font object using
// Windows API CreateFontIndirect(), convert the HFONT to a
// CFont* before selecting the font object into a DC (device
// context) for text drawing, and finally delete the font object.
// Initialize a CFont object with the characteristics given
// in a LOGFONT structure.
LOGFONT lf;
// clear out structure
memset(&lf, 0, sizeof(LOGFONT));
// request a 12-pixel-height font
lf.lfHeight = 12;
// request a face name "Arial"
_tcsncpy_s(lf.lfFaceName, LF_FACESIZE, _T("Arial"), 7);
// create the font
HFONT hfont = ::CreateFontIndirect(&lf);
// Convert the HFONT to CFont*.
CFont *pfont = CFont::FromHandle(hfont);
// Do something with the font just created...
CClientDC dc(this);
CFont *def_font = dc.SelectObject(pfont);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);
// Done with the font. Delete the font object.
::DeleteObject(hfont);
CFont::GetLogFont
Chiamare questa funzione per recuperare una copia della LOGFONT
struttura per CFont
.
int GetLogFont(LOGFONT* pLogFont);
Parametri
pLogFont
Puntatore alla LOGFONT
struttura per ricevere le informazioni sul tipo di carattere.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Esempio
// The code fragment shows how to retrieve a copy of the
// LOGFONT structure for a currently selected font of a window.
CFont *pFont = pWnd->GetFont();
if (NULL != pFont)
{
LOGFONT lf;
pFont->GetLogFont(&lf);
TRACE(_T("Typeface name of font = %s\n"), lf.lfFaceName);
}
CFont::operator HFONT
Utilizzare questo operatore per ottenere l'handle GDI di Windows del tipo di carattere associato all'oggetto CFont
.
operator HFONT() const;
Valore restituito
Handle dell'oggetto carattere GDI di Windows associato a CFont
se ha esito positivo; in caso contrario NULL
, .
Osservazioni:
Poiché questo operatore viene usato automaticamente per le conversioni da CFont
a Tipi di carattere e testo, è possibile passare CFont
oggetti a funzioni che prevedono HFONT
s.
Per altre informazioni sull'uso di oggetti grafici, vedere Oggetti grafici in Windows SDK.
Esempio
// The code fragment shows the usage of CFont::operator HFONT.
// Initialize a CFont object with the characteristics given
// in a LOGFONT structure.
LOGFONT lf;
// clear out structure
memset(&lf, 0, sizeof(LOGFONT));
// request a 12-pixel-height font
lf.lfHeight = 12;
// request a face name "Arial"
_tcsncpy_s(lf.lfFaceName, LF_FACESIZE, _T("Arial"), 7);
CFont font1;
font1.CreateFontIndirect(&lf); // create the font
// CFont::operator HFONT automatically converts font1 from
// CFont* to HFONT.
CFont *font2 = CFont::FromHandle(font1);
// Do something with the font just created...
CClientDC dc(this);
CFont *def_font = dc.SelectObject(font2);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);
// Done with the font. Delete the font object.
font1.DeleteObject();
Vedi anche
Esempio MFC HIERSVR
CGdiObject
Classe
Grafico della gerarchia