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
, CreatePointFont
atau 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
, , CreateFontIndirect
CreatePointFont
, 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_NORMAL
memiliki , 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 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();