Aracılığıyla paylaş


CFont Sınıf

Bir Windows grafik cihaz arabirimi (GDI) yazı tipini kapsüller ve yazı tipini düzenlemek için üye işlevleri sağlar.

Sözdizimi

class CFont : public CGdiObject

Üyeler

Ortak Oluşturucular

Veri Akışı Adı Açıklama
CFont::CFont Bir CFont nesne oluşturur.

Genel Yöntemler

Veri Akışı Adı Açıklama
CFont::CreateFont Belirtilen özelliklere sahip bir CFont başlatır.
CFont::CreateFontIndirect Bir CFont yapıda verilen özelliklere sahip bir LOGFONT nesneyi başlatır.
CFont::CreatePointFont CFont Belirtilen yükseklikle bir başlatır, bir noktanın onda biri ile ölçülür ve yazı biçimi.
CFont::CreatePointFontIndirect CreateFontIndirect Yazı tipi yüksekliğinin mantıksal birimler yerine bir noktanın onda biri cinsinden ölçülmüş olması dışında aynıdır.
CFont::FromHandle Windows HFONTverildiğinde bir CFont nesneye işaretçi döndürür.
CFont::GetLogFont nesnesine LOGFONT eklenmiş CFont mantıksal yazı tipi hakkındaki bilgilerle doldurur.

Ortak İşleçler

Veri Akışı Adı Açıklama
CFont::operator HFONT Nesneye bağlı Windows GDI yazı tipi tutamacını CFont döndürür.

Açıklamalar

Nesne CFont kullanmak için, bir CFont nesne oluşturup , CreateFontIndirect, CreatePointFontveya CreatePointFontIndirectile CreateFontbir Windows yazı tipi ekleyin ve ardından yazı tipini işlemek için nesnenin üye işlevlerini kullanın.

CreatePointFont ve CreatePointFontIndirect işlevlerinin kullanılması genellikle, yazı tipinin yüksekliği için nokta boyutundan mantıksal birimlere otomatik olarak dönüştürmeyi yaptıkları için veya bu işlevlerden CreateFont CreateFontIndirect daha kolaydır.

hakkında CFontdaha fazla bilgi için bkz . Grafik Nesneleri.

Devralma Hiyerarşisi

CObject

CGdiObject

CFont

Gereksinimler

Üstbilgi: afxwin.h

CFont::CFont

Bir CFont nesne oluşturur.

CFont();

Açıklamalar

Sonuçta elde edilen nesnenin kullanılabilmesi için önce , CreateFontIndirect, CreatePointFontveya CreatePointFontIndirect ile CreateFontbaşlatılması gerekir.

Örnek

CFont font;

CFont::CreateFont

Belirtilen özelliklere sahip bir CFont nesneyi başlatır.

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

Parametreler

nHeight
Yazı tipinin istenen yüksekliğini (mantıksal birimlerde) belirtir. lfHeight Açıklama için Windows SDK'sında yapının üyesine LOGFONTbakın. mutlak değeri nHeight , dönüştürüldükten sonra 16.384 cihaz birimini aşmamalıdır. Tüm yükseklik karşılaştırmaları için, yazı tipi eşleyici istenen boyutu aşmayan en büyük yazı tipini veya tüm yazı tiplerinin istenen boyutu aşması durumunda en küçük yazı tipini arar.

nWidth
Yazı tipindeki karakterlerin ortalama genişliğini (mantıksal birimler olarak) belirtir. 0 ise nWidth , en boy oranı, farkın mutlak değeri tarafından belirlenen en yakın eşleşmeyi bulmak için kullanılabilir yazı tiplerinin dijitalleştirme en boy oranıyla eşleştirilir.

nEscapement
Kaçış vektör ve görüntü yüzeyinin x ekseni arasındaki açıyı (0,1 derecelik birimler halinde) belirtir. Kaçış vektör, bir satırdaki ilk ve son karakterlerin çıkış noktalarındaki çizgidir. Açı x ekseninden saat yönünün tersine ölçülür. lfEscapement Daha fazla bilgi için Windows SDK'sının LOGFONT yapısındaki üyeye bakın.

nOrientation
Bir karakterin temeli ile x ekseni arasındaki açıyı (0,1 derecelik birimler olarak) belirtir. Açı, y yönünün yukarı olduğu koordinat sistemleri için x ekseninden saat yönünün tersine, x ekseninden y yönünün aşağı ve saat yönünde ölçülür.

nWeight
Yazı tipi kalınlığını belirtir (1000 başına mürekkeple piksel cinsinden). lfWeight Daha fazla bilgi için Windows SDK'sının LOGFONT yapısındaki üyeye bakın. Açıklanan değerler yaklaşık değerlerdir; gerçek görünüm yazı biçimine bağlıdır. Bazı yazı tiplerinin yalnızca FW_NORMAL, FW_REGULARve FW_BOLD ağırlıkları vardır. Belirtilirse FW_DONTCARE , varsayılan bir ağırlık kullanılır.

bItalic
Yazı tipinin italik olup olmadığını belirtir.

bUnderline
Yazı tipinin altı çizili olup olmadığını belirtir.

cStrikeOut
Yazı tipindeki karakterlerin vurgulanıp vurgulanmayacağını belirtir. Sıfır olmayan bir değere ayarlanırsa üstü çizili yazı tipini belirtir.

nCharSet
Bir değer listesi için yazı tipinin karakter kümesinin lfCharSet Windows SDK'sı LOGFONT yapısındaki üyeyi seçin öğesini belirtir.

OEM karakter kümesi sisteme bağımlıdır.

Sistemde başka karakter kümelerine sahip yazı tipleri bulunabilir. Bilinmeyen karakter kümesine sahip bir yazı tipi kullanan bir uygulama, bu yazı tipiyle işlenecek dizeleri çevirmeye veya yorumlamaya çalışmamalıdır. Bunun yerine, dizeler doğrudan çıkış aygıtı sürücüsüne geçirilmelidir.

Yazı tipi eşleyici değeri DEFAULT_CHARSET kullanmaz. Bir uygulama, bir yazı tipinin adının ve boyutunun mantıksal yazı tipini tam olarak açıklamasına izin vermek için bu değeri kullanabilir. Belirtilen ada sahip bir yazı tipi yoksa, herhangi bir karakter kümesindeki yazı tipi belirtilen yazı tipiyle değiştirilebilir. Beklenmeyen sonuçlardan kaçınmak için, uygulamalar bu değeri tedbirli bir şekilde kullanmalıdır DEFAULT_CHARSET .

nOutPrecision
İstenen çıkış duyarlığı belirtir. Çıkış duyarlığı, çıkışın istenen yazı tipinin yüksekliği, genişliği, karakter yönü, kaçış ve aralık ile ne kadar yakından eşleşmesi gerektiğini tanımlar. Değerlerin lfOutPrecision LOGFONT listesi ve daha fazla bilgi için Windows SDK'sı yapısındaki üyeye bakın.

nClipPrecision
İstenen kırpma duyarlığı belirtir. Kırpma duyarlığı, kırpma bölgesinin kısmen dışında kalan karakterlerin nasıl kırpıldığını tanımlar. Değerlerin lfClipPrecision listesi için Windows SDK'sının LOGFONT yapısındaki üyeye bakın.

Ekli salt okunur yazı tipini kullanmak için, bir uygulama belirtmelidir CLIP_ENCAPSULATE.

Cihaz, TrueType ve vektör yazı tiplerinin tutarlı döndürmesini sağlamak için uygulama bit düzeyinde OR işlecini (|) kullanarak değeri diğer nClipPrecision değerlerden biriyle birleştirebilirCLIP_LH_ANGLES. CLIP_LH_ANGLES Bit ayarlanırsa, tüm yazı tiplerinin döndürmesi, koordinat sisteminin yönünün solak mı yoksa sağ elle mi olduğuna bağlıdır. (Koordinat sistemlerinin yönü hakkında daha fazla bilgi için parametrenin açıklamasına nOrientation bakın.) Ayarlanmadıysa CLIP_LH_ANGLES , cihaz yazı tipleri her zaman saat yönünün tersine döner, ancak diğer yazı tiplerinin döndürülmesi koordinat sisteminin yönüne bağlıdır.

nQuality
GDI'nin mantıksal yazı tipi özniteliklerini gerçek bir fiziksel yazı tipinin öznitelikleriyle eşleştirmeyi ne kadar dikkatli bir şekilde denemesi gerektiğini tanımlayan yazı tipinin çıkış kalitesini belirtir. Değerlerin lfQuality listesi için Windows SDK'sının LOGFONT yapısındaki üyeye bakın.

nPitchAndFamily
Yazı tipinin perdesini ve ailesini belirtir. Değerlerin lfPitchAndFamily LOGFONT listesi ve daha fazla bilgi için Windows SDK'sı yapısındaki üyeye bakın.

lpszFacename
Yazı CString tipinin yazı biçimi adını belirten null ile sonlandırılan bir dizenin işaretçisi veya işaretçisi. Bu dizenin uzunluğu 30 karakteri aşmamalıdır. Windows EnumFontFamilies işlevi, kullanılabilir durumdaki tüm yazı tiplerini listelemek için kullanılabilir. ise lpszFacename NULL, GDI cihazdan bağımsız bir yazı biçimi kullanır.

Dönüş Değeri

Başarılı olursa sıfır olmayan; aksi takdirde 0.

Açıklamalar

Yazı tipi daha sonra herhangi bir cihaz bağlamı için yazı tipi olarak seçilebilir.

CreateFont İşlev yeni bir Windows GDI yazı tipi oluşturmaz. Yalnızca GDI için kullanılabilen fiziksel yazı tiplerinden en yakın eşleşmeyi seçer.

Uygulamalar mantıksal yazı tipi oluştururken çoğu parametre için varsayılan ayarları kullanabilir. Her zaman belirli değerler verilmesi gereken parametreler ve lpszFacename'tirnHeight. Ve lpszFacename uygulama tarafından ayarlanmazsanHeight, oluşturulan mantıksal yazı tipi cihaza bağlıdır.

İşlev tarafından oluşturulan nesneyle CFont bitirdiğinizde, cihaz bağlamında farklı bir yazı tipi seçmek için komutunu kullanın CDC::SelectObject ve ardından artık gerekli olmayan nesneyi silinCFont.CreateFont

Örnek

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

Bir CFont yapıda verilen özelliklere sahip bir LOGFONTnesneyi başlatır.

BOOL CreateFontIndirect(const LOGFONT* lpLogFont);

Parametreler

lpLogFont
Mantıksal yazı tipinin özelliklerini tanımlayan bir LOGFONT yapıya işaret eder.

Dönüş Değeri

Başarılı olursa sıfır olmayan; aksi takdirde 0.

Açıklamalar

Yazı tipi daha sonra herhangi bir cihaz için geçerli yazı tipi olarak seçilebilir.

Bu yazı tipi, yapıda belirtilen özelliklere LOGFONT sahiptir. Üye işlevi kullanılarak CDC::SelectObject yazı tipi seçildiğinde, GDI yazı tipi eşleyicisi mantıksal yazı tipini mevcut bir fiziksel yazı tipiyle eşleştirmeye çalışır. Yazı tipi eşleyici mantıksal yazı tipi için tam eşleşme bulamazsa, özellikleri istenen özelliklerin mümkün olduğunca çoğuyla eşleşen alternatif bir yazı tipi sağlar.

İşlev tarafından oluşturulan nesneye CFont artık ihtiyacınız kalmadığında, cihaz bağlamında farklı bir yazı tipi seçmek için kullanınCDC::SelectObject, ardından artık gerekli olmayan nesneyi silinCFont.CreateFontIndirect

Örnek

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

Bu işlev, belirtilen yazı tipini ve nokta boyutunu oluşturmak için basit bir yol sağlar.

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

Parametreler

nPointSize
Bir noktanın onda birinde istenen yazı tipi yüksekliği. (Örneğin, 12 punto yazı tipi istemek için 120 geçirin.)

lpszFaceName
Yazı CString tipinin yazı biçimi adını belirten null ile sonlandırılan bir dizenin işaretçisi veya işaretçisi. Bu dizenin uzunluğu 30 karakteri aşmamalıdır. Windows EnumFontFamilies işlevi, kullanılabilir durumdaki tüm yazı tiplerini listelemek için kullanılabilir. ise lpszFaceName NULL, GDI cihazdan bağımsız bir yazı biçimi kullanır.

pDC
CDC içindeki yüksekliği nPointSize mantıksal birimlere dönüştürmek için kullanılacak nesne işaretçisi. ise NULL, dönüştürme için bir ekran cihazı bağlamı kullanılır.

Dönüş Değeri

Başarılı olursa sıfır olmayan, aksi takdirde 0.

Açıklamalar

tarafından işaret edilen CDC nesnesini kullanarak içindeki nPointSize yüksekliği otomatik olarak mantıksal birimlere pDCdönüştürür.

İşlev tarafından CreatePointFont oluşturulan nesneyle CFont bitirdiğinizde, önce cihaz bağlamından yazı tipini seçin, ardından nesneyi silinCFont.

Örnek

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

Bu işlev, öğesinin üyesinin LOGFONT cihaz birimleri yerine bir noktanın onda birinde yorumlanmış olması dışında lfHeight aynıdırCreateFontIndirect.

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

Parametreler

lpLogFont
Mantıksal yazı tipinin özelliklerini tanımlayan bir LOGFONT yapıya işaret eder. Yapının lfHeight üyesi LOGFONT mantıksal birimler yerine bir noktanın onda biri cinsinden ölçülür. (Örneğin, 12 punto yazı tipi istemek için 120 olarak ayarlayın lfHeight .)

pDC
CDC içindeki yüksekliği lfHeight mantıksal birimlere dönüştürmek için kullanılacak nesne işaretçisi. ise NULL, dönüştürme için bir ekran cihazı bağlamı kullanılır.

Dönüş Değeri

Başarılı olursa sıfır olmayan, aksi takdirde 0.

Açıklamalar

Bu işlev, yapıyı Windows'a lfHeight geçirmeden LOGFONT önce tarafından işaret edilen pDC nesneyi kullanarak CDC içindeki yüksekliği otomatik olarak mantıksal birimlere dönüştürür.

İşlev tarafından CreatePointFontIndirect oluşturulan nesneyle CFont bitirdiğinizde, önce cihaz bağlamından yazı tipini seçin, ardından nesneyi silinCFont.

Örnek

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

Windows GDI yazı tipi nesnesine CFont tanıtıcı HFONT verildiğinde nesnenin işaretçisini döndürür.

static CFont* PASCAL FromHandle(HFONT hFont);

Parametreler

hFont
HFONT Windows yazı tipinin tutamacı.

Dönüş Değeri

Başarılı olursa nesne CFont işaretçisi; aksi takdirde NULL.

Açıklamalar

Bir CFont nesne tanıtıcıya zaten bağlı değilse, geçici CFont bir nesne oluşturulur ve eklenir. Bu geçici CFont nesne, yalnızca uygulamanın olay döngüsünde boşta kalma süresine sahip olduğu ve tüm geçici grafik nesnelerinin silindiği bir sonraki zamana kadar geçerlidir. Bunu söylemenin bir diğer yolu da geçici nesnenin yalnızca bir pencere iletisinin işlenmesi sırasında geçerli olmasıdır.

Örnek

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

için yapısının bir kopyasını almak için CFontbu işlevi çağırınLOGFONT.

int GetLogFont(LOGFONT* pLogFont);

Parametreler

pLogFont
LOGFONT Yazı tipi bilgilerini almak için yapı işaretçisi.

Dönüş Değeri

İşlev başarılı olursa sıfır olmayan, aksi takdirde 0.

Örnek

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

Nesneye eklenen yazı tipinin Windows GDI tutamacını almak için CFont bu işleci kullanın.

operator HFONT() const;

Dönüş Değeri

Başarılı olursa öğesine CFont eklenen Windows GDI yazı tipi nesnesinin tutamacı; aksi takdirde NULL.

Açıklamalar

Bu işleç, 'den CFont Yazı Tipleri ve Metin'e dönüştürmeler için otomatik olarak kullanıldığından, nesneleri bekleyen HFONTişlevlere geçirebilirsinizCFont.

Grafik nesnelerini kullanma hakkında daha fazla bilgi için bkz . Windows SDK'sında Grafik Nesneleri .

Örnek

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

Ayrıca bkz.

MFC Örneği HIERSVR
CGdiObject Sınıf
Hiyerarşi Grafiği