Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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
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();