Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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ą CreateFontCreateFontIndirect, , CreatePointFontlub 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 CFontprogramu , 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ą CreateFontmetody , CreateFontIndirect, CreatePointFontlub 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_NORMALwagi , FW_REGULARi 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 CFontCreateFontIndirect 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 NULLdo 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 NULLdo 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 CDCpDC 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();