Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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
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 LOGFONT struktur 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 LOGFONT diberikan 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 lfHeightLOGFONT 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();