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 HFONT verildiğ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
, CreatePointFont
veya CreatePointFontIndirect
ile CreateFont
bir 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 CFont
daha fazla bilgi için bkz . Grafik Nesneleri.
Devralma Hiyerarşisi
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
, CreatePointFont
veya CreatePointFontIndirect
ile CreateFont
baş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 LOGFONT
bakı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_REGULAR
ve 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 LOGFONT
nesneyi 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 pDC
dö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 CFont
bu 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 HFONT
iş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();