LogFont与CharFormat互相转换

way1:

    CFontDialog::getcharformat

way2:

void CTextLine::ChangeLogFontToCharFormat(CHARFORMAT &cf, const LOGFONT lf, const COLORREF textcolor)
{
//CFE_AUTOCOLOR
 cf.dwMask = CFM_BOLD|CFM_CHARSET|CFM_COLOR|CFM_FACE|CFM_ITALIC|/
    CFM_SIZE|CFM_UNDERLINE|CFM_STRIKEOUT;
 
 BOOL bIsItalic = lf.lfItalic ;
 BOOL bIsBold = (lf.lfWeight > FW_BOLD);//? FW_NORMAL:FW_BOLD;
 BOOL bIsUnderline = lf.lfUnderline ;
 BOOL bIsStrickout = lf.lfStrikeOut ;

 cf.dwEffects |= CFE_PROTECTED;
 cf.dwEffects &= ~CFE_AUTOCOLOR;
 if (bIsBold)
 {
  cf.dwEffects |= CFE_BOLD;
 }
 else
 {
  cf.dwEffects &= ~CFE_BOLD;
 }

 if (bIsItalic)
 {
  cf.dwEffects |= CFE_ITALIC;
 }
 else
 {
  cf.dwEffects &= ~CFE_ITALIC;
 }
 
 if (bIsUnderline)
 {
  cf.dwEffects |= CFE_UNDERLINE;
 }
 else
 {
  cf.dwEffects &= ~CFE_UNDERLINE;
 }

 if (bIsStrickout)
 {
  cf.dwEffects |= CFM_STRIKEOUT;
 }
 else
 {
  cf.dwEffects &= ~CFM_STRIKEOUT;
 }
 
 //设置属性
 cf.yHeight =  -15 * lf.lfHeight;
 cf.crTextColor = textcolor;//;//m_Font_Color;
 cf.bCharSet = lf.lfCharSet ;
 cf.bPitchAndFamily = lf.lfPitchAndFamily ;
 sprintf(cf.szFaceName, lf.lfFaceName);
}

void CTextLine::ChangeCharFormatToLogFont(CHARFORMAT cf,  LOGFONT &lf,  COLORREF &textcolor)
{

 lf.lfOutPrecision = 3;
 lf.lfClipPrecision =2;
 lf.lfQuality = 1;
 //粗体
 if ((cf.dwEffects &CFE_BOLD )>0)
 {
  lf.lfWeight = 700;
 }
 else
 {
  lf.lfWeight = 400;
 }

 //斜体 
 if ((cf.dwEffects &CFE_ITALIC)>0)
 {
  lf.lfItalic = 1;
 }
 else
 {
  lf.lfItalic = 0;
 }


 //下划线
 if ((cf.dwEffects & CFE_UNDERLINE)>0)
 {
  lf.lfUnderline = 1;
 }
 else
 {
  lf.lfUnderline = 0;
 }

 //删除线
 if ((cf.dwEffects & CFE_STRIKEOUT)>0)
 {
  lf.lfStrikeOut = 1;
 }
 else
 {
  lf.lfStrikeOut =0;
 }
 
 lf.lfHeight = (-cf.yHeight/15);
 textcolor = cf.crTextColor;
 lf.lfCharSet = cf.bCharSet;
 lf.lfPitchAndFamily = cf.bPitchAndFamily;
 sprintf(lf.lfFaceName, cf.szFaceName);
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值