CFont
Klasa
Hermetyzuje czcionkę interfejsu urządzenia graficznego systemu Windows (GDI) i udostępnia funkcje członkowskie do manipulowania czcionką.
Składnia
class CFont : public CGdiObject
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CFont::CFont |
CFont Tworzy obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CFont::CreateFont |
Inicjuje element CFont o określonych cechach. |
CFont::CreateFontIndirect |
Inicjuje CFont obiekt o cechach podanych w LOGFONT strukturze. |
CFont::CreatePointFont |
Inicjuje element CFont o określonej wysokości, mierzony w dziesiątych punktach i kroju. |
CFont::CreatePointFontIndirect |
Tak samo jak CreateFontIndirect w przypadku, gdy wysokość czcionki jest mierzona w dziesiątych częściach punktu, a nie jednostek logicznych. |
CFont::FromHandle |
Zwraca wskaźnik do CFont obiektu w przypadku danego systemu Windows HFONT . |
CFont::GetLogFont |
Wypełnia element LOGFONT informacjami na temat czcionki logicznej dołączonej CFont do obiektu. |
Operatory publiczne
Nazwa/nazwisko | opis |
---|---|
CFont::operator HFONT |
Zwraca uchwyt czcionki GDI systemu Windows dołączony do CFont obiektu. |
Uwagi
Aby użyć CFont
obiektu, skonstruuj CFont
obiekt i dołącz do niego czcionkę systemu Windows za pomocą CreateFont
CreateFontIndirect
, , CreatePointFont
lub CreatePointFontIndirect
, a następnie użyj funkcji składowych obiektu, aby manipulować czcionką.
Funkcje CreatePointFont
i CreatePointFontIndirect
są często łatwiejsze do użycia niż CreateFont
lub CreateFontIndirect
ponieważ wykonują konwersję na wysokość czcionki z rozmiaru punktu do jednostek logicznych automatycznie.
Aby uzyskać więcej informacji na temat CFont
programu , zobacz Obiekty graficzne.
Hierarchia dziedziczenia
CFont
Wymagania
Nagłówek: afxwin.h
CFont::CFont
CFont
Tworzy obiekt.
CFont();
Uwagi
Wynikowy obiekt musi zostać zainicjowany za pomocą CreateFont
metody , CreateFontIndirect
, CreatePointFont
lub CreatePointFontIndirect
, zanim będzie można go użyć.
Przykład
CFont font;
CFont::CreateFont
Inicjuje CFont
obiekt o określonych cechach.
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);
Parametry
nHeight
Określa żądaną wysokość (w jednostkach logicznych) czcionki. lfHeight
Aby uzyskać opis, zobacz element członkowski LOGFONT
struktury w zestawie Windows SDK. Wartość bezwzględna nHeight
nie może przekraczać 16 384 jednostek urządzenia po jej przekonwertowaniu. W przypadku wszystkich porównań wysokości maper czcionek szuka największej czcionki, która nie przekracza żądanego rozmiaru lub najmniejszej czcionki, jeśli wszystkie czcionki przekraczają żądany rozmiar.
nWidth
Określa średnią szerokość (w jednostkach logicznych) znaków czcionki. Jeśli nWidth
wartość to 0, współczynnik proporcji urządzenia zostanie dopasowany do współczynnika proporcji cyfryzacji dostępnych czcionek w celu znalezienia najbliższego dopasowania, który jest określany przez bezwzględną wartość różnicy.
nEscapement
Określa kąt (w jednostkach 0,1 stopni) między wektorem ucieczki a osią x powierzchni ekranu. Wektor ucieczki to linia przechodząca przez początek pierwszych i ostatnich znaków w wierszu. Kąt jest mierzony w kierunku odwrotnym od osi x. Aby uzyskać więcej informacji, zobacz element lfEscapement
członkowski w LOGFONT
strukturze zestawu Windows SDK.
nOrientation
Określa kąt (w jednostkach 0,1 stopni) między punktem odniesienia znaku a osią x. Kąt jest mierzony w kierunku odwrotnym od osi x dla układów współrzędnych, w których kierunek y jest w dół i zgodnie z ruchem wskazówek zegara z osi x dla układów współrzędnych, w których kierunek y jest w górę.
nWeight
Określa wagę czcionki (w pikselach atramentowych na 1000). Aby uzyskać więcej informacji, zobacz element lfWeight
członkowski w LOGFONT
strukturze zestawu Windows SDK. Opisane wartości są przybliżone; rzeczywisty wygląd zależy od czcionki. Niektóre czcionki mają tylko FW_NORMAL
wagi , FW_REGULAR
i FW_BOLD
. Jeśli FW_DONTCARE
zostanie określony, zostanie użyta domyślna waga.
bItalic
Określa, czy czcionka jest kursywa.
bUnderline
Określa, czy czcionka jest podkreślona.
cStrikeOut
Określa, czy znaki czcionki są wykreślone. Określa czcionkę przekreślenia, jeśli jest ustawiona na wartość niezerową.
nCharSet
Określa zestaw znaków czcionkiPojmij lfCharSet
element członkowski w LOGFONT
strukturze zestawu Windows SDK, aby uzyskać listę wartości.
Zestaw znaków OEM jest zależny od systemu.
Czcionki z innymi zestawami znaków mogą istnieć w systemie. Aplikacja używająca czcionki z nieznanym zestawem znaków nie może próbować tłumaczyć ani interpretować ciągów, które mają być renderowane za pomocą tej czcionki. Zamiast tego ciągi powinny być przekazywane bezpośrednio do sterownika urządzenia wyjściowego.
Maper czcionek nie używa DEFAULT_CHARSET
wartości. Aplikacja może użyć tej wartości, aby zezwolić na pełne opisanie czcionki logicznej nazwy i rozmiaru czcionki. Jeśli czcionka o określonej nazwie nie istnieje, czcionka z dowolnego zestawu znaków może zostać zastąpiona określoną czcionką. Aby uniknąć nieoczekiwanych wyników, aplikacje powinny używać DEFAULT_CHARSET
wartości oszczędnie.
nOutPrecision
Określa żądaną precyzję danych wyjściowych. Precyzja danych wyjściowych określa, jak ściśle dane wyjściowe muszą odpowiadać wysokości, szerokości, orientacji znaku, uciekinieru i skoku żądanej czcionki. Zobacz element lfOutPrecision
członkowski w LOGFONT
strukturze w zestawie Windows SDK, aby uzyskać listę wartości i więcej informacji.
nClipPrecision
Określa żądaną precyzję przycinania. Precyzja wycinania określa sposób tworzenia wycinków znaków częściowo spoza regionu wycinków. Aby uzyskać listę wartości, zobacz element lfClipPrecision
członkowski w LOGFONT
strukturze w zestawie Windows SDK.
Aby użyć osadzonej czcionki tylko do odczytu, aplikacja musi określić wartość CLIP_ENCAPSULATE
.
Aby osiągnąć spójną rotację czcionek urządzenia, wartości TrueType i wektorów, aplikacja może używać operatora bitowego OR (|
), aby połączyć CLIP_LH_ANGLES
wartość z dowolną z innych nClipPrecision
wartości. CLIP_LH_ANGLES
Jeśli bit jest ustawiony, obrót dla wszystkich czcionek zależy od tego, czy orientacja układu współrzędnych jest leworęczna czy praworęczna. (Aby uzyskać więcej informacji na temat orientacji układów współrzędnych, zobacz opis parametru nOrientation
). Jeśli CLIP_LH_ANGLES
nie jest ustawiona, czcionki urządzenia zawsze obracają się w lewo, ale obrót innych czcionek zależy od orientacji układu współrzędnych.
nQuality
Określa jakość danych wyjściowych czcionki, która definiuje, jak dokładnie GDI musi próbować dopasować atrybuty czcionki logicznej do rzeczywistych czcionek fizycznych. Aby uzyskać listę wartości, zobacz element lfQuality
członkowski w LOGFONT
strukturze w zestawie Windows SDK.
nPitchAndFamily
Określa wysokość i rodzinę czcionki. Zobacz element lfPitchAndFamily
członkowski w LOGFONT
strukturze w zestawie Windows SDK, aby uzyskać listę wartości i więcej informacji.
lpszFacename
Znak CString
lub wskaźnik do ciągu zakończonego wartością null, który określa nazwę czcionki. Długość tego ciągu nie może przekraczać 30 znaków. Funkcja systemu Windows EnumFontFamilies
może służyć do wyliczania wszystkich aktualnie dostępnych czcionek. Jeśli lpszFacename
wartość to NULL
, interfejs GDI używa niezależnego od urządzenia kroju typów.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Czcionkę można następnie wybrać jako czcionkę dla dowolnego kontekstu urządzenia.
Funkcja CreateFont
nie tworzy nowej czcionki GDI systemu Windows. Wybiera ono tylko najbliższe dopasowanie z czcionek fizycznych dostępnych dla GDI.
Aplikacje mogą używać ustawień domyślnych dla większości parametrów podczas tworzenia czcionki logicznej. Parametry, które powinny zawsze mieć określone wartości, to nHeight
i lpszFacename
. Jeśli nHeight
aplikacja nie zostanie ustawiona i lpszFacename
nie zostanie ustawiona, tworzona czcionka logiczna jest zależna od urządzenia.
Po zakończeniu pracy z obiektem CFont
utworzonym przez CreateFont
funkcję użyj CDC::SelectObject
polecenia , aby wybrać inną czcionkę w kontekście urządzenia, a następnie usunąć CFont
obiekt, który nie jest już potrzebny.
Przykład
// 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
Inicjuje CFont
obiekt o cechach podanych w LOGFONT
strukturze.
BOOL CreateFontIndirect(const LOGFONT* lpLogFont);
Parametry
lpLogFont
LOGFONT
Wskazuje strukturę, która definiuje cechy czcionki logicznej.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Czcionkę można następnie wybrać jako bieżącą czcionkę dla dowolnego urządzenia.
Ta czcionka ma cechy określone w LOGFONT
strukturze. Po wybraniu czcionki przy użyciu funkcji składowej CDC::SelectObject
maper czcionek GDI próbuje dopasować czcionkę logiczną do istniejącej czcionki fizycznej. Jeśli maper czcionki nie znajdzie dokładnego dopasowania dla czcionki logicznej, udostępnia alternatywną czcionkę, której cechy pasują jak najwięcej żądanych cech, jak to możliwe.
Gdy nie potrzebujesz już obiektu utworzonego CFont
CreateFontIndirect
przez funkcję, użyj polecenia CDC::SelectObject
, aby wybrać inną czcionkę w kontekście urządzenia, a następnie usunąć CFont
obiekt, który nie jest już potrzebny.
Przykład
// 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
Ta funkcja zapewnia prosty sposób tworzenia czcionki określonej czcionki i rozmiaru punktu.
BOOL CreatePointFont(
int nPointSize,
LPCTSTR lpszFaceName,
CDC* pDC = NULL);
Parametry
nPointSize
Żądano wysokości czcionki w dziesiątych punktach. (Na przykład przekaż 120, aby zażądać czcionki 12-punktowej).
lpszFaceName
Znak CString
lub wskaźnik do ciągu zakończonego wartością null, który określa nazwę czcionki. Długość tego ciągu nie może przekraczać 30 znaków. Funkcja systemu Windows EnumFontFamilies
może służyć do wyliczania wszystkich aktualnie dostępnych czcionek. Jeśli lpszFaceName
wartość to NULL
, interfejs GDI używa niezależnego od urządzenia kroju typów.
pDC
Wskaźnik do CDC
obiektu, który ma być używany do konwertowania wysokości w nPointSize
jednostkach logicznych. Jeśli NULL
do konwersji jest używany kontekst urządzenia ekranu.
Wartość zwracana
Jeśli operacja niezerowa zakończyła się powodzeniem, w przeciwnym razie 0.
Uwagi
Automatycznie konwertuje wysokość na nPointSize
jednostki logiczne przy użyciu obiektu CDC wskazywane przez pDC
.
Po zakończeniu pracy z obiektem CFont
utworzonym CreatePointFont
przez funkcję najpierw wybierz czcionkę z kontekstu urządzenia, a następnie usuń CFont
obiekt.
Przykład
// 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
Ta funkcja jest taka sama jak CreateFontIndirect
ta, z tą różnicą, że lfHeight
element członkowski LOGFONT
obiektu jest interpretowany w dziesiątych punktach, a nie jednostkach urządzenia.
BOOL CreatePointFontIndirect(
const LOGFONT* lpLogFont,
CDC* pDC = NULL);
Parametry
lpLogFont
LOGFONT
Wskazuje strukturę, która definiuje cechy czcionki logicznej. Element lfHeight
członkowski LOGFONT
struktury jest mierzony w dziesiątych punktach, a nie jednostkach logicznych. (Na przykład ustaw wartość lfHeight
120, aby zażądać czcionki 12-punktowej).
pDC
Wskaźnik do CDC
obiektu, który ma być używany do konwertowania wysokości w lfHeight
jednostkach logicznych. Jeśli NULL
do konwersji jest używany kontekst urządzenia ekranu.
Wartość zwracana
Jeśli operacja niezerowa zakończyła się powodzeniem, w przeciwnym razie 0.
Uwagi
Ta funkcja automatycznie konwertuje wysokość elementu lfHeight
na jednostki logiczne przy użyciu obiektu wskazanego CDC
pDC
przez przed przekazaniem LOGFONT
struktury do systemu Windows.
Po zakończeniu pracy z obiektem CFont
utworzonym CreatePointFontIndirect
przez funkcję najpierw wybierz czcionkę z kontekstu urządzenia, a następnie usuń CFont
obiekt.
Przykład
// 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
Zwraca wskaźnik do CFont
obiektu, gdy dana HFONT
dojście do obiektu czcionki GDI systemu Windows.
static CFont* PASCAL FromHandle(HFONT hFont);
Parametry
hFont
Uchwyt HFONT
czcionki systemu Windows.
Wartość zwracana
Wskaźnik do CFont
obiektu, jeśli się powiedzie; w przeciwnym razie NULL
.
Uwagi
CFont
Jeśli obiekt nie jest jeszcze dołączony do uchwytu, zostanie utworzony i dołączony obiekt tymczasowyCFont
. Ten obiekt tymczasowy CFont
jest prawidłowy tylko do następnego czasu bezczynności aplikacji w pętli zdarzeń, w którym wszystkie tymczasowe obiekty graficzne są usuwane. Innym sposobem stwierdzenia jest to, że obiekt tymczasowy jest prawidłowy tylko podczas przetwarzania jednego komunikatu okna.
Przykład
// 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
Wywołaj tę funkcję, aby pobrać kopię LOGFONT
struktury dla elementu CFont
.
int GetLogFont(LOGFONT* pLogFont);
Parametry
pLogFont
Wskaźnik do LOGFONT
struktury w celu odbierania informacji o czcionkach.
Wartość zwracana
Nonzero, jeśli funkcja powiedzie się, w przeciwnym razie 0.
Przykład
// 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
Użyj tego operatora, aby pobrać uchwyt GDI systemu Windows czcionki dołączonej CFont
do obiektu.
operator HFONT() const;
Wartość zwracana
Uchwyt obiektu czcionki GDI systemu Windows dołączony do CFont
elementu , jeśli się powiedzie; w przeciwnym razie NULL
.
Uwagi
Ponieważ ten operator jest automatycznie używany do konwersji z CFont
do czcionek i tekstu, można przekazać CFont
obiekty do funkcji, które oczekują HFONT
.
Aby uzyskać więcej informacji na temat używania obiektów graficznych, zobacz Obiekty graficzne w zestawie Windows SDK.
Przykład
// 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();