Bagikan melalui


CFont Kelas

Merangkum font antarmuka perangkat grafis (GDI) Windows dan menyediakan fungsi anggota untuk memanipulasi font.

Sintaks

class CFont : public CGdiObject

Anggota

Konstruktor Publik

Nama Deskripsi
CFont::CFont Membuat CFont objek.

Metode Publik

Nama Deskripsi
CFont::CreateFont Menginisialisasi CFont dengan karakteristik yang ditentukan.
CFont::CreateFontIndirect Menginisialisasi CFont objek dengan karakteristik yang LOGFONT diberikan dalam struktur.
CFont::CreatePointFont Menginisialisasi CFont dengan tinggi yang ditentukan, diukur dalam persepuluh titik, dan typeface.
CFont::CreatePointFontIndirect Sama seperti CreateFontIndirect kecuali bahwa tinggi font diukur dalam persepuluh titik daripada unit logis.
CFont::FromHandle Mengembalikan penunjuk ke CFont objek saat diberikan Windows HFONT.
CFont::GetLogFont LOGFONT Mengisi dengan informasi tentang font logis yang dilampirkan ke CFont objek.

Operator Publik

Nama Deskripsi
CFont::operator HFONT Mengembalikan handel font GDI Windows yang dilampirkan ke CFont objek.

Keterangan

Untuk menggunakan CFont objek, buat CFont objek dan lampirkan font Windows ke objek tersebut dengan CreateFont, , CreateFontIndirect, CreatePointFontatau CreatePointFontIndirect, lalu gunakan fungsi anggota objek untuk memanipulasi font.

Fungsi CreatePointFont dan CreatePointFontIndirect sering lebih mudah digunakan daripada CreateFont atau CreateFontIndirect karena mereka melakukan konversi untuk tinggi font dari ukuran titik ke unit logis secara otomatis.

Untuk informasi selengkapnya tentang CFont, lihat Objek Grafik.

Hierarki Warisan

CObject

CGdiObject

CFont

Persyaratan

Header: afxwin.h

CFont::CFont

Membuat CFont objek.

CFont();

Keterangan

Objek yang dihasilkan harus diinisialisasi dengan CreateFont, , CreateFontIndirectCreatePointFont, atau CreatePointFontIndirect sebelum dapat digunakan.

Contoh

CFont font;

CFont::CreateFont

Menginisialisasi CFont objek dengan karakteristik yang ditentukan.

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

Parameter

nHeight
Menentukan tinggi yang diinginkan (dalam unit logis) dari font. lfHeight Lihat anggota LOGFONTstruktur di Windows SDK untuk deskripsi. Nilai absolut nHeight tidak boleh melebihi 16.384 unit perangkat setelah dikonversi. Untuk semua perbandingan tinggi, pemeta font mencari font terbesar yang tidak melebihi ukuran yang diminta atau font terkecil jika semua font melebihi ukuran yang diminta.

nWidth
Menentukan lebar rata-rata (dalam unit logis) karakter dalam font. Jika nWidth adalah 0, rasio aspek perangkat akan dicocokkan dengan rasio aspek digitalisasi font yang tersedia untuk menemukan kecocokan terdekat, yang ditentukan oleh nilai absolut perbedaan.

nEscapement
Menentukan sudut (dalam unit 0,1 derajat) antara vektor escapement dan sumbu x permukaan tampilan. Vektor escapement adalah garis melalui asal-usul karakter pertama dan terakhir pada baris. Sudut diukur berlawanan arah jarum arah dari sumbu x. lfEscapement Lihat anggota dalam LOGFONT struktur di Windows SDK untuk informasi selengkapnya.

nOrientation
Menentukan sudut (dalam unit 0,1 derajat) antara garis besar karakter dan sumbu x. Sudut diukur berlawanan arah jarum jam dari sumbu x untuk sistem koordinat di mana arah y turun dan searah jarum jam dari sumbu-x untuk sistem koordinat tempat arah y naik.

nWeight
Menentukan bobot font (dalam piksel bertinta per 1000). lfWeight Lihat anggota dalam LOGFONT struktur di Windows SDK untuk informasi selengkapnya. Nilai yang dijelaskan adalah perkiraan; penampilan aktual tergantung pada jenis huruf. Beberapa font hanya FW_NORMALmemiliki , FW_REGULAR, dan FW_BOLD bobot. Jika FW_DONTCARE ditentukan, bobot default digunakan.

bItalic
Menentukan apakah font miring.

bUnderline
Menentukan apakah font bergaris bawah.

cStrikeOut
Menentukan apakah karakter dalam font disambar keluar. Menentukan font coretan jika diatur ke nilai bukan nol.

nCharSet
Menentukan kumpulan karakter fontLihat lfCharSet anggota dalam LOGFONT struktur di Windows SDK untuk daftar nilai.

Set karakter OEM bergantung pada sistem.

Font dengan set karakter lain mungkin ada di sistem. Aplikasi yang menggunakan font dengan set karakter yang tidak diketahui tidak boleh mencoba menerjemahkan atau menginterpretasikan string yang akan dirender dengan font tersebut. Sebagai gantinya, string harus diteruskan langsung ke driver perangkat output.

Pemeta font tidak menggunakan DEFAULT_CHARSET nilai . Aplikasi dapat menggunakan nilai ini untuk memungkinkan nama dan ukuran font sepenuhnya menggambarkan font logis. Jika font dengan nama yang ditentukan tidak ada, font dari kumpulan karakter apa pun dapat digantikan untuk font yang ditentukan. Untuk menghindari hasil yang tidak terduga, aplikasi harus menggunakan DEFAULT_CHARSET nilai dengan hemat.

nOutPrecision
Menentukan presisi output yang diinginkan. Presisi output menentukan seberapa dekat output harus cocok dengan tinggi, lebar, orientasi karakter, escapement, dan pitch font yang diminta. lfOutPrecision Lihat anggota dalam LOGFONT struktur di Windows SDK untuk daftar nilai dan informasi selengkapnya.

nClipPrecision
Menentukan presisi kliping yang diinginkan. Presisi kliping menentukan cara mengklip karakter yang sebagian berada di luar wilayah kliping. lfClipPrecision Lihat anggota dalam LOGFONT struktur di Windows SDK untuk daftar nilai.

Untuk menggunakan font baca-saja yang disematkan, aplikasi harus menentukan CLIP_ENCAPSULATE.

Untuk mencapai rotasi yang konsisten dari font perangkat, TrueType, dan vektor, aplikasi dapat menggunakan operator OR bitwise (|) untuk menggabungkan CLIP_LH_ANGLES nilai dengan salah satu nilai lainnya nClipPrecision . CLIP_LH_ANGLES Jika bit diatur, rotasi untuk semua font tergantung pada apakah orientasi sistem koordinat adalah tangan kiri atau tangan kanan. (Untuk informasi selengkapnya tentang orientasi sistem koordinat, lihat deskripsi nOrientation parameter.) Jika CLIP_LH_ANGLES tidak diatur, font perangkat selalu diputar berlawanan arah jaga, tetapi rotasi font lain tergantung pada orientasi sistem koordinat.

nQuality
Menentukan kualitas output font, yang menentukan seberapa hati-hati GDI harus mencoba mencocokkan atribut font logis dengan atribut font fisik aktual. lfQuality Lihat anggota dalam LOGFONT struktur di Windows SDK untuk daftar nilai.

nPitchAndFamily
Menentukan pitch dan keluarga font. lfPitchAndFamily Lihat anggota dalam LOGFONT struktur di Windows SDK untuk daftar nilai dan informasi selengkapnya.

lpszFacename
Atau CString pointer ke string null-terminated yang menentukan nama typeface font. Panjang string ini tidak boleh melebihi 30 karakter. Fungsi Windows EnumFontFamilies dapat digunakan untuk menghitung semua font yang saat ini tersedia. Jika lpszFacename adalah NULL, GDI menggunakan typeface independen perangkat.

Tampilkan Nilai

Bukan nol jika berhasil; jika tidak, 0.

Keterangan

Font kemudian dapat dipilih sebagai font untuk konteks perangkat apa pun.

Fungsi CreateFont ini tidak membuat font GDI Windows baru. Ini hanya memilih kecocokan terdekat dari font fisik yang tersedia untuk GDI.

Aplikasi dapat menggunakan pengaturan default untuk sebagian besar parameter saat membuat font logis. Parameter yang harus selalu diberikan nilai tertentu adalah nHeight dan lpszFacename. Jika nHeight dan lpszFacename tidak diatur oleh aplikasi, font logis yang dibuat bergantung pada perangkat.

Ketika Anda selesai dengan objek yang CFont dibuat oleh CreateFont fungsi, gunakan CDC::SelectObject untuk memilih font yang berbeda ke dalam konteks perangkat, lalu hapus CFont objek yang tidak lagi diperlukan.

Contoh

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

Menginisialisasi CFont objek dengan karakteristik yang LOGFONTdiberikan dalam struktur.

BOOL CreateFontIndirect(const LOGFONT* lpLogFont);

Parameter

lpLogFont
Menunjuk ke LOGFONT struktur yang menentukan karakteristik font logis.

Tampilkan Nilai

Bukan nol jika berhasil; jika tidak, 0.

Keterangan

Font kemudian dapat dipilih sebagai font saat ini untuk perangkat apa pun.

Font ini memiliki karakteristik yang ditentukan dalam LOGFONT struktur. Saat font dipilih dengan menggunakan CDC::SelectObject fungsi anggota, pemeta font GDI mencoba mencocokkan font logis dengan font fisik yang ada. Jika pemeta font gagal menemukan kecocokan yang tepat untuk font logis, itu menyediakan font alternatif yang karakteristiknya cocok dengan karakteristik yang diminta sebanyak mungkin.

Ketika Anda tidak lagi memerlukan objek yang CFont dibuat oleh CreateFontIndirect fungsi, gunakan CDC::SelectObject untuk memilih font yang berbeda ke dalam konteks perangkat, lalu hapus CFont objek yang tidak lagi diperlukan.

Contoh

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

Fungsi ini menyediakan cara sederhana untuk membuat font dari typeface dan ukuran titik tertentu.

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

Parameter

nPointSize
Tinggi font yang diminta dalam persepuluh titik. (Misalnya, berikan 120 untuk meminta font 12 poin.)

lpszFaceName
Atau CString pointer ke string null-terminated yang menentukan nama typeface font. Panjang string ini tidak boleh melebihi 30 karakter. Fungsi Windows EnumFontFamilies dapat digunakan untuk menghitung semua font yang saat ini tersedia. Jika lpszFaceName adalah NULL, GDI menggunakan typeface independen perangkat.

pDC
Penunjuk ke objek yang CDC akan digunakan untuk mengonversi tinggi ke nPointSize unit logis. Jika NULL, konteks perangkat layar digunakan untuk konversi.

Tampilkan Nilai

Bukan nol jika berhasil, jika tidak, 0.

Keterangan

Ini secara otomatis mengonversi tinggi ke nPointSize unit logis menggunakan objek CDC yang ditunjukkan oleh pDC.

Ketika Anda selesai dengan objek yang CFont dibuat oleh CreatePointFont fungsi, pertama-tama pilih font dari konteks perangkat, lalu hapus CFont objek.

Contoh

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

Fungsi ini sama dengan CreateFontIndirect kecuali bahwa lfHeight anggota LOGFONT ditafsirkan dalam persepuluh titik daripada unit perangkat.

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

Parameter

lpLogFont
Menunjuk ke LOGFONT struktur yang menentukan karakteristik font logis. Anggota lfHeight LOGFONT struktur diukur dalam persepuluh titik daripada unit logis. (Misalnya, atur lfHeight ke 120 untuk meminta font 12 poin.)

pDC
Penunjuk ke objek yang CDC akan digunakan untuk mengonversi tinggi ke lfHeight unit logis. Jika NULL, konteks perangkat layar digunakan untuk konversi.

Tampilkan Nilai

Bukan nol jika berhasil, jika tidak, 0.

Keterangan

Fungsi ini secara otomatis mengonversi tinggi ke lfHeight unit logis menggunakan objek yang CDC diarahkan sebelum pDC meneruskan LOGFONT struktur ke Windows.

Ketika Anda selesai dengan objek yang CFont dibuat oleh CreatePointFontIndirect fungsi, pertama-tama pilih font dari konteks perangkat, lalu hapus CFont objek.

Contoh

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

Mengembalikan penunjuk ke CFont objek saat diberikan HFONT handel ke objek font GDI Windows.

static CFont* PASCAL FromHandle(HFONT hFont);

Parameter

hFont
Handel HFONT ke font Windows.

Tampilkan Nilai

Penunjuk ke CFont objek jika berhasil; jika tidak NULL.

Keterangan

CFont Jika objek belum dilampirkan ke handel, objek sementara CFont dibuat dan dilampirkan. Objek sementara CFont ini hanya berlaku sampai kali berikutnya aplikasi memiliki waktu menganggur dalam perulangan peristiwanya, di mana semua objek grafis sementara dihapus. Cara lain untuk mengatakan ini adalah bahwa objek sementara hanya valid selama pemrosesan satu pesan jendela.

Contoh

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

Panggil fungsi ini untuk mengambil salinan LOGFONT struktur untuk CFont.

int GetLogFont(LOGFONT* pLogFont);

Parameter

pLogFont
Arahkan ke LOGFONT struktur untuk menerima informasi font.

Tampilkan Nilai

Bukan nol jika fungsi berhasil, jika tidak, 0.

Contoh

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

Gunakan operator ini untuk mendapatkan handel GDI Windows dari font yang dilampirkan ke CFont objek.

operator HFONT() const;

Tampilkan Nilai

Handel objek font GDI Windows yang dilampirkan jika CFont berhasil; jika tidak NULL.

Keterangan

Karena operator ini secara otomatis digunakan untuk konversi dari CFont ke Font dan Teks, Anda dapat meneruskan CFont objek ke fungsi yang mengharapkan HFONT.

Untuk informasi selengkapnya tentang menggunakan objek grafis, lihat Objek Grafis di Windows SDK.

Contoh

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

Lihat juga

Sampel MFC HIERSVR
CGdiObject Kelas
Bagan Hierarki