CFont
¶CFont
原文連結: https://darkblack01.blogspot.com/2012/05/cfont.html
移植時的最後更新日期: 2012-05-22T09:54:50.158+08:00
//建立字型的用法
CreateFont( m_font.CreateFont(
int nHeight, 18, //指定想要的高度(邏輯單位)的字體。
int nWidth, 0, //指定平均寬度(邏輯單位)中的字符的字體。
int nEscapement, 0, //指定角度(以0.1度為單位),旋轉刻度向量與x軸的夾角。
int nOrientation, 0, //指定角度(以0.1度為單位)之間的字符基線和X軸。
int nWeight, FW_REGULAR, //指定字體的粗細(以像素為單位,每簽訂1000)。
BYTE bItalic, FALSE, //指定字體是否加斜體。
BYTE bUnderline, FALSE, //指定字體是否加下劃線。
BYTE cStrikeOut, FALSE, //指定字體是否加刪除線。
BYTE nCharSet, SYMBOL_CHARSET, //指定字集(符號、西歐、BIG5之類的)
BYTE nOutPrecision, OUT_DEFAULT_PRECIS, //指定所需的輸出精度。
BYTE nClipPrecision, CLIP_DEFAULT_PRECIS, //指定所需的剪切精度。 剪輯精度定義了如何剪輯字符的剪輯區域以外的部分。
BYTE nQuality, DEFAULT_QUALITY, //指定字體的輸出質量,它定義如何精心的GDI必須嘗試匹配邏輯字體屬性的一個實際的物理字體。
BYTE nPitchAndFamily, FIXED_PITCH, //指定的字距和群組(Family)的字體。
LPCTSTR lpszFacename “Webdings”); //一個 CString的 或指針為空結束的字符串,指定字體名稱的字體。
//幫Buttom設定字型
pBtmOK->SetFont(&m_font); //╳
pBtmMax->SetFont(&m_font); //□
在View使用Font要注意的流程
//宣告DC
//宣告字型
//創建字型
//宣告暫存現有字型指標的記憶體位址
//設定字型進入DC
//定義暫存字型指標的記憶體位址
//顯示字
//恢復設定暫存字型進入DC
//清除字型設定
BOOL bFont = FALSE;
CFont aFont;
CFont * p01dFont;
UINT nTxtSz(16);
CSize TextSize(nTxtSz, nTxtSz);
bFont = aFont.CreateFont(TextSize.cx, 0, 0, 0, FW_NORMAL, 0, 0, 0, 0, 0, 0, 0, DEFAULT_PITCH|FF_MODERN, “Verdana”);
if(bFont)
{
p01dFont = pDC->SelectObject(&aFont); //設定新的時,會把目前的(舊的)給回傳出來
aFont.DeleteObject(); //砍掉剛設定的(新的)字型
}
pDC->TextOut(ptO.x + szSpace.cx + cellwidth, ptO.y + szSpace.cy, “10040406-A0C1BB2800004”);
if (bFont)
{
pDC->SelectObject(p01dFont); //設定回原本的(舊的),回傳剛用過的
bFont = FALSE;
}
LOGFONT
typedef struct tagLOGFONT {
LONG lfHeight;
LONG lfWidth;
LONG lfEscapement;
LONG lfOrientation;
LONG lfWeight;
BYTE lfItalic;
BYTE lfUnderline;
BYTE lfStrikeOut;
BYTE lfCharSet;
BYTE lfOutPrecision;
BYTE lfClipPrecision;
BYTE lfQuality;
BYTE lfPitchAndFamily;
TCHAR lfFaceName[LF_FACESIZE];
} LOGFONT, PLOGFONT;
example code:
void CExoView::OnDraw(CDC pDC)
{
CFont font;
LOGFONT LogFont;
LogFont.lfStrikeOut = 0;
LogFont.lfUnderline = 0;
LogFont.lfHeight = 42;
LogFont.lfEscapement = 0;
LogFont.lfItalic = TRUE;
font.CreateFontIndirect(&LogFont);
CFont *pFont = pDC->SelectObject(&font);
pDC->TextOut(20, 18, “James Kolowski”, 14);
pDC->SelectObject(pFont);
font.DeleteObject();
}
參考:http://www.ucancode.net/faq/CreateFont.htm