CFont-klass

Kapslar in ett Windows-grafikenhetsgränssnitt (GDI) och tillhandahåller medlemsfunktioner för att ändra teckensnittet.

Syntax

class CFont : public CGdiObject

Medlemmar

Offentliga konstruktorer

Namn Beskrivning
CFont::CFont Konstruerar ett CFont objekt.

Offentliga metoder

Namn Beskrivning
CFont::CreateFont Initierar en CFont med de angivna egenskaperna.
CFont::CreateFontIndirect Initierar ett CFont objekt med de egenskaper som anges i en LOGFONT struktur.
CFont::CreatePointFont Initierar en CFont med den angivna höjden, mätt i tiondelar av en punkt och typsnitt.
CFont::CreatePointFontIndirect Samma som CreateFontIndirect förutom att teckenhöjden mäts i tiondelar av en punkt i stället för logiska enheter.
CFont::FromHandle Returnerar en pekare till ett CFont objekt när en Windows-fil HFONTges .
CFont::GetLogFont Fyller en LOGFONT med information om det logiska teckensnittet som är kopplat till objektet CFont .

Offentliga operatörer

Namn Beskrivning
CFont::operator HFONT Returnerar windows GDI-teckensnittshandtaget CFont som är kopplat till objektet.

Anmärkningar

Om du vill använda ett CFont objekt skapar du ett CFont objekt och kopplar ett Windows-teckensnitt till det med CreateFont, CreateFontIndirect, CreatePointFonteller och CreatePointFontIndirectanvänder sedan objektets medlemsfunktioner för att ändra teckensnittet.

Funktionerna CreatePointFont och CreatePointFontIndirect är ofta enklare att använda än CreateFont eller CreateFontIndirect eftersom de konverterar teckensnittets höjd från en punktstorlek till logiska enheter automatiskt.

Mer information om CFontfinns i Grafiska objekt.

Arvshierarki

CObject

CGdiObject

CFont

Kravspecifikation

rubrik:afxwin.h

CFont::CFont

Konstruerar ett CFont objekt.

CFont();

Anmärkningar

Det resulterande objektet måste initieras med CreateFont, CreateFontIndirect, CreatePointFonteller CreatePointFontIndirect innan det kan användas.

Exempel

CFont font;

CFont::CreateFont

Initierar ett CFont objekt med de angivna egenskaperna.

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);

Parameterar

nHeight
Anger önskad höjd (i logiska enheter) för teckensnittet. lfHeight En beskrivning finns LOGFONT i medlemmen i strukturen i Windows SDK. Det absoluta värdet för nHeight får inte överstiga 16 384 enheter efter konverteringen. För alla höjdjämförelser letar teckensnittsmapparen efter det största teckensnittet som inte överskrider den begärda storleken eller det minsta teckensnittet om alla teckensnitt överskrider den begärda storleken.

nWidth
Anger den genomsnittliga bredden (i logiska enheter) för tecken i teckensnittet. Om nWidth är 0 matchas enhetens proportioner mot digitaliseringsproportionen för de tillgängliga teckensnitten för att hitta den närmaste matchningen, vilket bestäms av skillnadens absoluta värde.

nEscapement
Anger vinkeln (i 0,1 graders enheter) mellan utrymningsvektorn och x-axeln på visningsytan. Utrymningsvektorn är linjen genom ursprunget för de första och sista tecknen på en rad. Vinkeln mäts motsols från x-axeln. lfEscapement Mer information finns i medlemmen i LOGFONT strukturen i Windows SDK.

nOrientation
Anger vinkeln (i 0,1 graders enheter) mellan baslinjen för ett tecken och x-axeln. Vinkeln mäts motsols från x-axeln för koordinatsystem där y-riktningen är nere och medsols från x-axeln för koordinatsystem där y-riktningen är uppe.

nWeight
Anger teckenvikten (i färgade bildpunkter per 1 000). lfWeight Mer information finns i medlemmen i LOGFONT strukturen i Windows SDK. De beskrivna värdena är ungefärliga. det faktiska utseendet beror på typsnittet. Vissa teckensnitt har bara FW_NORMAL, FW_REGULARoch FW_BOLD vikter. Om FW_DONTCARE anges används en standardvikt.

bItalic
Anger om teckensnittet är kursivt.

bUnderline
Anger om teckensnittet är understruket.

cStrikeOut
Anger om tecken i teckensnittet ska slås ut. Anger ett strikeout-teckensnitt om det är inställt på ett värde som inte är noll.

nCharSet
Anger teckensnittets teckenuppsättningSe lfCharSet medlemmen i LOGFONT strukturen i Windows SDK för en lista med värden.

OEM-teckenuppsättningen är systemberoende.

Teckensnitt med andra teckenuppsättningar kan finnas i systemet. Ett program som använder ett teckensnitt med en okänd teckenuppsättning får inte försöka översätta eller tolka strängar som ska återges med det teckensnittet. I stället ska strängarna skickas direkt till drivrutinen för utdataenheten.

Teckensnittsmapparen använder DEFAULT_CHARSET inte värdet. Ett program kan använda det här värdet för att tillåta att namnet och storleken på ett teckensnitt fullständigt beskriver det logiska teckensnittet. Om ett teckensnitt med det angivna namnet inte finns kan ett teckensnitt från en teckenuppsättning ersättas med det angivna teckensnittet. För att undvika oväntade resultat bör program använda DEFAULT_CHARSET värdet sparsamt.

nOutPrecision
Anger önskad utdataprecision. Utdataprecisionen definierar hur nära utdata måste matcha det begärda teckensnittets höjd, bredd, teckenorientering, escapement och tonhöjd. lfOutPrecision Se medlemmen i LOGFONT strukturen i Windows SDK för en lista med värden och mer information.

nClipPrecision
Anger önskad precision för urklipp. Urklippsprecisionen definierar hur du klipper ut tecken som delvis ligger utanför urklippsområdet. lfClipPrecision Se medlemmen i LOGFONT strukturen i Windows SDK för en lista med värden.

Om du vill använda ett inbäddat skrivskyddat teckensnitt måste ett program ange CLIP_ENCAPSULATE.

För att uppnå konsekvent rotation av enhets-, TrueType- och vektorteckensnitt kan ett program använda bitvis OR-operatorn (|) för att kombinera CLIP_LH_ANGLES värdet med något av de andra nClipPrecision värdena. Om biten CLIP_LH_ANGLES anges beror rotationen för alla teckensnitt på om koordinatsystemets orientering är vänsterhänt eller högerhänt. Mer information om koordinatsystemens orientering finns i beskrivningen av parametern nOrientation . Om CLIP_LH_ANGLES inte har angetts roterar enhetsteckensnitt alltid motsols, men rotationen av andra teckensnitt beror på koordinatsystemets orientering.

nQuality
Anger teckensnittets utdatakvalitet, som definierar hur noggrant GDI måste försöka matcha attributen för logiskt teckensnitt med egenskaperna för ett faktiskt fysiskt teckensnitt. lfQuality Se medlemmen i LOGFONT strukturen i Windows SDK för en lista med värden.

nPitchAndFamily
Anger teckensnittets tonhöjd och familj. lfPitchAndFamily Se medlemmen i LOGFONT strukturen i Windows SDK för en lista med värden och mer information.

lpszFacename
En CString eller pekare till en null-avslutad sträng som anger typsnittsnamnet för teckensnittet. Längden på den här strängen får inte överstiga 30 tecken. Windows-funktionen EnumFontFamilies kan användas för att räkna upp alla tillgängliga teckensnitt. Om lpszFacename är NULLanvänder GDI ett enhetsoberoende typsnitt.

Returvärde

Nonzero om det lyckas; annars 0.

Anmärkningar

Teckensnittet kan sedan väljas som teckensnitt för alla enhetskontexter.

Funktionen CreateFont skapar inte något nytt Windows GDI-teckensnitt. Den väljer bara den närmaste matchningen från de fysiska teckensnitt som är tillgängliga för GDI.

Program kan använda standardinställningarna för de flesta parametrar när du skapar ett logiskt teckensnitt. De parametrar som alltid ska ges specifika värden är nHeight och lpszFacename. Om nHeight och lpszFacename inte anges av programmet är det logiska teckensnitt som skapas enhetsberoende.

När du är klar med objektet CFont som skapats av CreateFont funktionen använder CDC::SelectObject du för att välja ett annat teckensnitt i enhetskontexten och tar sedan bort det CFont objekt som inte längre behövs.

Exempel

// 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

Initierar ett CFont objekt med de egenskaper som anges i en LOGFONT struktur.

BOOL CreateFontIndirect(const LOGFONT* lpLogFont);

Parameterar

lpLogFont
Pekar på en LOGFONT struktur som definierar egenskaperna för det logiska teckensnittet.

Returvärde

Nonzero om det lyckas; annars 0.

Anmärkningar

Teckensnittet kan sedan väljas som aktuellt teckensnitt för valfri enhet.

Det här teckensnittet har de egenskaper som anges i LOGFONT strukturen. När teckensnittet väljs med hjälp CDC::SelectObject av medlemsfunktionen försöker GDI-teckensnittsmapparen matcha det logiska teckensnittet med ett befintligt fysiskt teckensnitt. Om teckensnittsmapparen inte kan hitta en exakt matchning för det logiska teckensnittet, ger det ett alternativt teckensnitt vars egenskaper matchar så många av de begärda egenskaperna som möjligt.

När du inte längre behöver objektet CFont som skapats av CreateFontIndirect funktionen använder CDC::SelectObject du för att välja ett annat teckensnitt i enhetskontexten och tar sedan bort det CFont objekt som inte längre behövs.

Exempel

// 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

Den här funktionen är ett enkelt sätt att skapa ett teckensnitt med ett angivet typsnitt och en viss punktstorlek.

BOOL CreatePointFont(
    int nPointSize,
    LPCTSTR lpszFaceName,
    CDC* pDC = NULL);

Parameterar

nPointSize
Begärd teckenhöjd i tiondelar av en punkt. (Skicka till exempel 120 för att begära ett 12-punktsteckensnitt.)

lpszFaceName
En CString eller pekare till en null-avslutad sträng som anger typsnittsnamnet för teckensnittet. Längden på den här strängen får inte överstiga 30 tecken. Windows-funktionen EnumFontFamilies kan användas för att räkna upp alla tillgängliga teckensnitt. Om lpszFaceName är NULLanvänder GDI ett enhetsoberoende typsnitt.

pDC
Pekare till det CDC objekt som ska användas för att konvertera höjden till nPointSize logiska enheter. Om NULLanvänds en skärmenhetskontext för konverteringen.

Returvärde

Nonzero om det lyckas, annars 0.

Anmärkningar

Den konverterar automatiskt höjden i nPointSize till logiska enheter med hjälp av CDC-objektet som pekas på av pDC.

När du är klar med objektet CFont som skapats av CreatePointFont funktionen väljer du först teckensnittet ur enhetskontexten och tar sedan bort CFont objektet.

Exempel

// 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

Den här funktionen är densamma som CreateFontIndirect förutom att lfHeight medlemmen LOGFONT i tolkas i tiondelar av en punkt i stället för enhetsenheter.

BOOL CreatePointFontIndirect(
    const LOGFONT* lpLogFont,
    CDC* pDC = NULL);

Parameterar

lpLogFont
Pekar på en LOGFONT struktur som definierar egenskaperna för det logiska teckensnittet. Medlemmen lfHeight i LOGFONT strukturen mäts i tiondelar av en punkt i stället för logiska enheter. (Ange till exempel lfHeight 120 för att begära ett 12-punktsteckensnitt.)

pDC
Pekare till det CDC objekt som ska användas för att konvertera höjden till lfHeight logiska enheter. Om NULLanvänds en skärmenhetskontext för konverteringen.

Returvärde

Nonzero om det lyckas, annars 0.

Anmärkningar

Den här funktionen konverterar automatiskt höjden i lfHeight till logiska enheter med hjälp av objektet CDC som pekas på innan pDC strukturen skickas LOGFONT vidare till Windows.

När du är klar med objektet CFont som skapats av CreatePointFontIndirect funktionen väljer du först teckensnittet ur enhetskontexten och tar sedan bort CFont objektet.

Exempel

// 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

Returnerar en pekare till ett CFont objekt när det ges ett HFONT handtag till ett Windows GDI-teckensnittsobjekt.

static CFont* PASCAL FromHandle(HFONT hFont);

Parameterar

hFont
Ett HFONT handtag till ett Windows-teckensnitt.

Returvärde

En pekare till ett CFont objekt om det lyckas, annars NULL.

Anmärkningar

Om ett CFont objekt inte redan är kopplat till handtaget skapas och kopplas ett tillfälligt CFont objekt. Det här temporära CFont objektet är endast giltigt till nästa gång programmet har inaktiv tid i händelseloopen, då alla tillfälliga grafiska objekt tas bort. Ett annat sätt att säga detta är att det tillfälliga objektet endast är giltigt under bearbetningen av ett fönstermeddelande.

Exempel

// 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

Anropa den här funktionen för att hämta en kopia av LOGFONT strukturen för CFont.

int GetLogFont(LOGFONT* pLogFont);

Parameterar

pLogFont
Pekare LOGFONT till strukturen för att ta emot teckensnittsinformationen.

Returvärde

Nonzero om funktionen lyckas, annars 0.

Exempel

// 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

Använd den här operatorn för att hämta Windows GDI-handtaget för teckensnittet CFont som är kopplat till objektet.

operator HFONT() const;

Returvärde

Handtaget för windows GDI-teckensnittsobjektet som är kopplat till CFont om det lyckas, annars NULL.

Anmärkningar

Eftersom den här operatorn automatiskt används för konverteringar från CFont till Teckensnitt och Text kan du skicka CFont objekt till funktioner som förväntar sig HFONTs.

Mer information om hur du använder grafiska objekt finns i Grafiska objekt i Windows SDK.

Exempel

// 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();

Se även

MFC-exempel HIERSVR
CGdiObject klass
hierarkidiagram