MFC 字体

CFont::CreateFont:

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

说实在的,有点复杂,不在于参数的长短,在于有些参数根本很难理解什么意思。
这是一般的参数配置:

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


创建一个字体,有点受不了。
幸好CFont给我们封装了另外几个函数,使用起来比较简单。
1.CreatePointFont:

This function provides a simple way to create a font of a specified typeface and point size.



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

比如说font.CreatePointFont(120, _T("新宋体"));
创建一个12点大小的宋体字体。

如果我们要加粗或者添加下划线怎么办?
看下面的例子,我只展示了OnPaint处理:

void CMainWindow::OnPaint() {
    CPaintDC dc(this);
    RECT rect;
    GetClientRect(&rect);
    LOGFONT lf;
    ::ZeroMemory(&lf, sizeof(lf));
    lf.lfHeight = 720;
    lf.lfWeight = FW_BOLD;
    lf.lfUnderline = TRUE;
    lf.lfItalic = TRUE;
    lf.lfStrikeOut = TRUE;
    ::lstrcpy(lf.lfFaceName, _T("微软雅黑"));
    CFont font;
    font.CreatePointFontIndirect(&lf);
    dc.SelectObject(&font);
    dc.SetTextColor(RGB(200,0,255));
    dc.DrawText("你好世界!\nHello MFC!", &rect, 0);
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值