zoukankan      html  css  js  c++  java
  • 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);
    }

  • 相关阅读:
    【vc】14_网络编程_socket编程
    【vc】1_Windows程序内部运行机制
    【vc】6_菜 单
    【vc】5_文本编程
    JZOJ 6481. 【GDOI2020模拟02.22】黎曼几何(矩阵乘法)
    JZOJ 6470. 【GDOI2020模拟02.13】小 B 的环(字符串哈希)
    A*(A-Star)搜索算法 入门详解
    JZOJ 4017. 【雅礼联考DAY01】逃跑(0/1分数规划+单调队列+线段树优化DP)
    JZOJ 6439. 【GDOI2020模拟01.17】小 ω 数排列(DP)
    JZOJ 100003. 【NOI2017模拟.4.1】 Tree(费用流)
  • 原文地址:https://www.cnblogs.com/carl2380/p/1924661.html
Copyright © 2011-2022 走看看