Megosztás:


CFont osztály

Beágyaz egy Windows grafikuseszköz-felület (GDI) betűtípust, és tagfüggvényeket biztosít a betűtípus manipulálásához.

Szemantika

class CFont : public CGdiObject

Tagok

Nyilvános konstruktorok

Név Leírás
CFont::CFont Egy CFont objektumot hoz létre.

Nyilvános metódusok

Név Leírás
CFont::CreateFont Inicializál egy CFont adott jellemzőkkel rendelkezőt.
CFont::CreateFontIndirect Inicializál egy CFont objektumot a szerkezetben LOGFONT megadott jellemzőkkel.
CFont::CreatePointFont Inicializál egy CFont adott magasságú, ponttizedben mért magasságot és betűképet.
CFont::CreatePointFontIndirect Ugyanaz, mintha CreateFontIndirect a betűmagasságot egy pont tizedében mérik, nem pedig logikai egységekben.
CFont::FromHandle Egy windowsos objektumra mutató CFont mutatót HFONTad vissza.
CFont::GetLogFont Kitölti az LOGFONT objektumhoz CFont csatolt logikai betűtípussal kapcsolatos információkat.

Nyilvános operátorok

Név Leírás
CFont::operator HFONT Az objektumhoz csatolt Windows GDI betűtípus-leírót CFont adja vissza.

Megjegyzések

Objektum használatához CFont hozzon létre egy CFont objektumot, és csatoljon hozzá egy Windows-betűtípust CreateFontaz , CreateFontIndirect, CreatePointFontvagy CreatePointFontIndirect, majd az objektum tagfüggvényeivel a betűtípus módosításához.

A CreatePointFont függvények és CreatePointFontIndirect függvények használata gyakran egyszerűbb, mint CreateFont vagy CreateFontIndirect mivel automatikusan elvégzik a betűtípus magasságának konvertálását pontméretről logikai egységekre.

További információ: CFontGrafikus objektumok.

Öröklési hierarchia

CObject

CGdiObject

CFont

Követelmények

fejléc:afxwin.h

CFont::CFont

Egy CFont objektumot hoz létre.

CFont();

Megjegyzések

Az eredményként kapott objektumot inicializálni kell a következővel CreateFont: , CreateFontIndirect, CreatePointFontvagy CreatePointFontIndirect használat előtt.

példa

CFont font;

CFont::CreateFont

Inicializál egy CFont objektumot a megadott jellemzőkkel.

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

Paraméterek

nHeight
Megadja a betűtípus kívánt magasságát (logikai egységekben). Leírásért tekintse meg a lfHeightLOGFONT Windows SDK szerkezetének tagját. A konvertálás után a nHeight készülék abszolút értéke nem haladhatja meg a 16 384-et. Minden magassági összehasonlítás esetén a betűtípus-leképező a legnagyobb betűtípust keresi, amely nem haladja meg a kért méretet vagy a legkisebb betűtípust, ha az összes betűtípus meghaladja a kért méretet.

nWidth
A betűtípus karaktereinek átlagos szélességét (logikai egységekben) adja meg. Ha nWidth 0, az eszköz méretaránya megegyezik a rendelkezésre álló betűtípusok digitalizálási oldalarányával a legközelebbi egyezés megtalálásához, amelyet a különbség abszolút értéke határoz meg.

nEscapement
Megadja a kioldó vektor és a megjelenítési felület x tengelye közötti szöget (0,1 fokos egységekben). A feloldó vektor a vonal első és utolsó karakterének forrásán áthaladó vonal. A szög mérése az x tengelytől az óramutató járásával ellentétes irányban történik. További információért tekintse meg a lfEscapementLOGFONT Windows SDK struktúrájának tagját.

nOrientation
Meghatározza a karakter alapkonfigurációja és az x tengely közötti szöget (0,1 fokos egységekben). A szöget az x tengelytől az óramutató járásával ellentétes irányban mérik olyan koordinátarendszerek esetében, amelyekben az y irány lefelé és az óramutató járásával megegyező irányban van az x tengelytől az y irányt felfelé mutató koordináta-rendszerek esetében.

nWeight
Megadja a betűvastagságot (szabadkézett képpont/1000). További információért tekintse meg a lfWeightLOGFONT Windows SDK struktúrájának tagját. A leírt értékek hozzávetőlegesek; a tényleges megjelenés a betűtípustól függ. Egyes betűtípusok csak FW_NORMAL, FW_REGULARés FW_BOLD súlyok. Ha FW_DONTCARE meg van adva, a rendszer egy alapértelmezett súlyt használ.

bItalic
Meghatározza, hogy a betűtípus dőlt-e.

bUnderline
Megadja, hogy a betűtípus alá van-e húzva.

cStrikeOut
Megadja, hogy a betűtípusban szereplő karakterek ki vannak-e ütve. Ha nem nulla értékre van beállítva, akkor a kihúzott betűtípust adja meg.

nCharSet
Meghatározza a betűtípus karakterkészletét, amely lfCharSet a Windows SDK struktúrájában LOGFONT szereplő tagot jelöli az értékek listájához.

Az OEM-karakterkészlet rendszerfüggő.

Előfordulhat, hogy más karakterkészletekkel rendelkező betűtípusok is léteznek a rendszerben. Az ismeretlen karakterkészlettel rendelkező betűtípust használó alkalmazások nem kísérelhetik meg lefordítani vagy értelmezni az ezzel a betűtípussal megjelenítendő sztringeket. Ehelyett a sztringeket közvetlenül a kimeneti eszközillesztőnek kell átadni.

A betűtípus-leképező nem használja az DEFAULT_CHARSET értéket. Az alkalmazások ezzel az értékkel engedélyezhetik, hogy egy betűtípus neve és mérete teljes mértékben leírja a logikai betűtípust. Ha a megadott névvel rendelkező betűtípus nem létezik, bármely karakterkészletből származó betűtípus helyettesíthető a megadott betűtípussal. A váratlan eredmények elkerülése érdekében az alkalmazásoknak takarékosan kell használniuk az DEFAULT_CHARSET értéket.

nOutPrecision
Megadja a kívánt kimeneti pontosságot. A kimeneti pontosság határozza meg, hogy a kimenetnek milyen szorosan kell egyeznie a kért betűtípus magasságával, szélességével, karakter tájolásával, feloldásával és hangmagasságával. lfOutPrecision A Windows SDK struktúrájának tagját LOGFONT az értékek listájáért és további információkért tekintse meg.

nClipPrecision
Megadja a kívánt kivágási pontosságot. A kivágási pontosság azt határozza meg, hogyan kell kivágni a részben a kivágási régión kívül eső karaktereket. lfClipPrecision Az értékek listájáért tekintse meg a LOGFONT Windows SDK struktúrájának tagját.

Beágyazott írásvédett betűtípus használatához az alkalmazásnak meg kell adnia CLIP_ENCAPSULATE.

Az eszköz, a TrueType és a vektor betűtípusainak konzisztens forgása érdekében az alkalmazás a bitenkénti VAGY operátorral (|) kombinálhatja az CLIP_LH_ANGLES értéket a többi nClipPrecision értékkel. Ha a CLIP_LH_ANGLES bit be van állítva, az összes betűtípus forgatása attól függ, hogy a koordináta-rendszer tájolása balkezes vagy jobbkezes-e. A koordinátarendszerek tájolásával kapcsolatos további információkért tekintse meg a nOrientation paraméter leírását. Ha CLIP_LH_ANGLES nincs beállítva, az eszköz betűtípusai mindig az óramutató járásával ellentétes irányban forognak, de a többi betűtípus elforgatása a koordinátarendszer tájolásától függ.

nQuality
Megadja a betűtípus kimeneti minőségét, amely meghatározza, hogy a GDI-nek milyen gondosan kell megkísérlnie a logikai betűtípus attribútumainak egyezését egy tényleges fizikai betűtípuséval. lfQuality Az értékek listájáért tekintse meg a LOGFONT Windows SDK struktúrájának tagját.

nPitchAndFamily
Meghatározza a betűtípus hangmagasságát és családját. lfPitchAndFamily A Windows SDK struktúrájának tagját LOGFONT az értékek listájáért és további információkért tekintse meg.

lpszFacename
Egy CString null értékű sztringre mutató vagy mutató, amely megadja a betűtípus betűformanevét. A karakterlánc hossza nem haladhatja meg a 30 karaktert. A Windows EnumFontFamilies függvény az összes jelenleg elérhető betűtípus számbavételére használható. Ha lpszFacename igen NULL, a GDI eszközfüggetlen betűtípust használ.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0.

Megjegyzések

A betűtípus később bármilyen eszközkörnyezet betűtípusaként kiválasztható.

A CreateFont függvény nem hoz létre új Windows GDI-betűtípust. Csupán a GDI számára elérhető fizikai betűtípusok közül választja ki a legközelebbi egyezést.

Az alkalmazások a legtöbb paraméterhez használhatják az alapértelmezett beállításokat logikai betűtípus létrehozásakor. A paraméterek, amelyeknek mindig adott értékeket kell megadniuk, és nHeight.lpszFacename nHeight Ha lpszFacename az alkalmazás nem állítja be, a létrehozott logikai betűtípus eszközfüggő.

Amikor befejezi a CFont függvény által CreateFont létrehozott objektumot, CDC::SelectObject válasszon ki egy másik betűtípust az eszközkörnyezetben, majd törölje a CFont már nem szükséges objektumot.

példa

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

Inicializál egy CFont objektumot a szerkezetben LOGFONT megadott jellemzőkkel.

BOOL CreateFontIndirect(const LOGFONT* lpLogFont);

Paraméterek

lpLogFont
Egy olyan struktúrára LOGFONT mutat, amely meghatározza a logikai betűtípus jellemzőit.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0.

Megjegyzések

A betűtípus később bármely eszköz aktuális betűtípusaként kiválasztható.

Ez a betűtípus a szerkezetben LOGFONT megadott jellemzőkkel rendelkezik. Ha a betűtípust a CDC::SelectObject tagfüggvény használatával választja ki, a GDI-betűtípus-leképező megpróbálja egyezni a logikai betűtípussal egy meglévő fizikai betűtípussal. Ha a betűtípus-leképező nem talál pontos egyezést a logikai betűtípushoz, egy alternatív betűtípust biztosít, amelynek jellemzői a lehető legtöbb kért jellemzővel egyeznek.

Ha már nincs szüksége a CFontCreateFontIndirect függvény által létrehozott objektumra, CDC::SelectObject válasszon ki egy másik betűtípust az eszközkörnyezetben, majd törölje a CFont már nem szükséges objektumot.

példa

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

Ez a függvény egyszerű módot kínál egy adott betűtípus és pontméret betűtípusának létrehozására.

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

Paraméterek

nPointSize
Kért betűmagasság egy pont tizedében. (Például pass 120 12 pontos betűtípus kéréséhez.)

lpszFaceName
Egy CString null értékű sztringre mutató vagy mutató, amely megadja a betűtípus betűformanevét. A karakterlánc hossza nem haladhatja meg a 30 karaktert. A Windows EnumFontFamilies függvény az összes jelenleg elérhető betűtípus számbavételére használható. Ha lpszFaceName igen NULL, a GDI eszközfüggetlen betűtípust használ.

pDC
Mutasson arra az CDC objektumra, amellyel logikai egységekké alakíthatja a magasságot nPointSize . Ha NULL, akkor a rendszer egy képernyőeszköz-környezetet használ az átalakításhoz.

Visszaadott érték

Sikertelen, ha sikeres, egyébként 0.

Megjegyzések

Automatikusan logikai egységekké alakítja a nPointSize magasságot a hivatkozott CDC-objektummal pDC.

Amikor befejezi a CFont függvény által CreatePointFont létrehozott objektumot, először jelölje ki a betűtípust az eszközkörnyezetből, majd törölje az CFont objektumot.

példa

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

Ez a függvény ugyanaz, mint CreateFontIndirect azzal a kivételrel, hogy a rendszer az lfHeightLOGFONT eszközegységek helyett egy pont tizedében értelmezi a tagot.

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

Paraméterek

lpLogFont
Egy olyan struktúrára LOGFONT mutat, amely meghatározza a logikai betűtípus jellemzőit. A lfHeight szerkezet tagját a LOGFONT logikai egységek helyett egy pont tizedében mérik. (Például állítsa be lfHeight a 120-ra a 12 pontos betűtípus kéréséhez.)

pDC
Mutasson arra az CDC objektumra, amellyel logikai egységekké alakíthatja a magasságot lfHeight . Ha NULL, akkor a rendszer egy képernyőeszköz-környezetet használ az átalakításhoz.

Visszaadott érték

Sikertelen, ha sikeres, egyébként 0.

Megjegyzések

Ez a függvény automatikusan logikai egységekké alakítja a magasságot lfHeight a CDC hivatkozott pDC objektum használatával, mielőtt a szerkezetet átadta a LOGFONT Windowsnak.

Amikor befejezi a CFont függvény által CreatePointFontIndirect létrehozott objektumot, először jelölje ki a betűtípust az eszközkörnyezetből, majd törölje az CFont objektumot.

példa

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

Egy objektumra CFont mutató mutatót ad HFONT vissza, ha egy Windows GDI-betűtípus-objektumhoz kap egy fogópontot.

static CFont* PASCAL FromHandle(HFONT hFont);

Paraméterek

hFont
Egy HFONT Windows-betűtípus leírója.

Visszaadott érték

Az objektumra mutató CFont mutató, ha sikeres; ellenkező esetben NULL.

Megjegyzések

Ha egy CFont objektum még nincs csatolva a leíróhoz, egy ideiglenes CFont objektum jön létre és csatolva. Ez az ideiglenes CFont objektum csak addig érvényes, amíg az alkalmazás következő alkalommal nem rendelkezik tétlenségi idővel az eseményhurkában, és ekkor az összes ideiglenes grafikus objektum törlődik. Ennek másik módja, hogy az ideiglenes objektum csak egy ablaküzenet feldolgozása során érvényes.

példa

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

Hívja meg ezt a függvényt a struktúra másolatának LOGFONT lekéréséhez CFont.

int GetLogFont(LOGFONT* pLogFont);

Paraméterek

pLogFont
A betűtípus információinak fogadásához mutasson a LOGFONT szerkezetre.

Visszaadott érték

Nonzero, ha a függvény sikeres, ellenkező esetben 0.

példa

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

Ezzel az operátorral lekérheti az objektumhoz csatolt betűtípus Windows GDI-leíróját CFont .

operator HFONT() const;

Visszaadott érték

A Windows GDI betűtípus objektumának CFont leírója, ha sikeres; ellenkező esetben NULL.

Megjegyzések

Mivel ezt az operátort a rendszer automatikusan CFont és szöveggé alakításokhoz használja, objektumokat továbbíthat CFont a várt HFONTfüggvényeknek.

További információ a grafikus objektumok használatáról: Grafikus objektumok a Windows SDK-ban.

példa

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

Lásd még

MFC-minta HIERSVR
CGdiObject osztály
hierarchiadiagram