vc++_LogFont设置字体
VC++ 2008-03-19 21:38:29 阅读641 评论3 字号:大中小
example one: 打印出设置好的字体
LOGFONT logFont;
logFont.lfHeight = 8;
logFont.lfWidth = 0;
logFont.lfEscapement = 0;
logFont.lfOrientation = 0;
logFont.lfWeight = FW_NORMAL;
logFont.lfItalic = 0;
logFont.lfUnderline = 0;
logFont.lfStrikeOut = 0;
logFont.lfCharSet = ANSI_CHARSET;
logFont.lfOutPrecision = OUT_DEFAULT_PRECIS;
logFont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
logFont.lfQuality = PROOF_QUALITY;
logFont.lfPitchAndFamily=VARIABLE_PITCH | FF_ROMAN;
strcpy (logFont.lfFaceName, "Times New Roman");
// Initialize the position of text in the window.
UINT position = 0;
// Create and display eight example fonts.
// for (UINT x=0; x<8; ++x)
// {
UINT x = 7;
// Set the new font's height.
logFont.lfHeight = 16 + (x*8);
// Create a new font and select it into the DC.
CFont font;
font.CreateFontIndirect( &logFont );
CFont *oldFont = pDC->SelectObject(&font);
// Print text with the new font.
position += logFont.lfHeight;
pDC->TextOut(20, position, "A sample font.");
// Restore the old font to the DC.
pDC->SelectObject(oldFont);
// }
example two: 大小改为20
LOGFONT lf;
CFont *m_pfont;
m_pfont=m_cEdit1.GetFont();
m_pfont->GetLogFont(&lf);
lf.lfHeight=20;
m_pfont->Detach();
m_font.CreateFontIndirect(&lf);
m_cEdit1.SetFont(m_pfont,TRUE);
一、设置字体格式
void C**View::OnDraw(CDC*pDC)
{
pDC->SetBkMode(TRANSPARENT);//输出透明字体(使输出的文本背景与控件背景颜色相同)
pDC->SetTextColor( , , );
//定义字体结构
LOGFONT stFont;
//设置字体格式
..........
}
LOGFONT是Windows内部字体的逻辑结构,主要用于设置字体格式,其定义如下:
typedef struct tagLOGFONTA
{
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;
CHAR lfFaceName[LF_FACESIZE];
} LOGFONTA
其各个字段的含义如下:
lfHeight:指定逻辑单位的字符或者字符元高度
lfWidth:指定逻辑单位的字体字符的平均宽度
lfEscapement:指定每行文本输出时相对于设备x轴的角度,其单位为1/10度
lfOrientation:指定字符基线相对于设备x轴的角度,其单位为1/10度。此值在Win9X中和lfEscapement具有相同的值,而在WinNT下有时候可能不同
lfWeight:指定字体的重量,Windows中字体重量表示字体的粗细程度,其范围在0~1000之间,正常为400,粗体为700,若此值为空,则使用默认的字体重量
lfItalic:此值为TRUE时,字体为斜体
lfUnderline:此值为TRUE时,字体带下划线
lfStrikeOut:此值为TRUE时,字体带删除线
lfCharSet:指定所使用的字符集,如GB2312_CHARSET,CHINESEBIG5_CHARSET等
lfOutPrecision:指定输出精度,它定义了输出与所要求的字体高度、宽度、字符方向及字体类型等相接近的程度
lfClipPrecision:指定剪辑精度,它定义了当字符的一部分超过剪辑区域时对字符的剪辑方式
lfQuality:指定输出质量,它定义了GDI在匹配逻辑字体属性到实际的物理字体时所使用的方式
lfPitchAndFamily:指定字体的字符间距和族
lfFaceName:指向NULL结尾的字符串的指针,此字符串即为所使用的字体名称,其长度不能超过32个字符,如果为空,则使用系统默认的字体