创建字体CreateFont,CreateFontIndirect

3 篇文章 0 订阅

跟画刷,区域一样,字体是GDI其中的一个对象,可以使用SelectObject来添加到HDC环境中。

创建字体有两种方法

1CreateFont

  1. BOOL   CreateFont(      
  2.   
  3.                               int   nHeight,                       //字体的高度  
  4.   
  5.                                    int   nWidth,                         //字体的宽度  
  6.   
  7.                                    int   nEscapement,               //字体显示的角度  
  8.   
  9.                                    int   nOrientation,             //字体的角度  
  10.   
  11.                                    int   nWeight,                       //字体的磅数  
  12.   
  13.                                    BYTE   bItalic,                     //斜体字体  
  14.   
  15.                                    BYTE   bUnderline,               //带下划线的字体  
  16.   
  17.                                    BYTE   cStrikeOut,               //带删除线的字体  
  18.   
  19.                                    BYTE   nCharSet,                   //所需的字符集  
  20.   
  21.                                    BYTE   nOutPrecision,         //输出的精度  
  22.   
  23.                                    BYTE   nClipPrecision,       //裁减的精度  
  24.   
  25.                                    BYTE   nQuality,                   //逻辑字体与输出设备的实际  
  26.   
  27.                                                                                  //字体之间的精度  
  28.   
  29.                                    BYTE   nPitchAndFamily,     //字体间距和字体集  
  30.   
  31.                                    LPCTSTR   lpszFacename       //字体名称  
  32.   
  33.                                );    
 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       //字体名称

                                );  



 

2CreateFontIndirect

HFONT CreateFontIndirect(
  CONST LOGFONT* lplf   // characteristics
);

看看LOGFONT的定义:

  1. typedef   struct   tagLOGFONT   {   //   lf      
  2.   
  3. LONG   lfHeight;                   //字体的高度  
  4.   
  5. LONG   lfWidth;                     //字体的宽度  
  6.   
  7. LONG   lfEscapement;           //字体显示的角度  
  8.   
  9. LONG   lfOrientation;         //字体的角度  
  10.   
  11. LONG   lfWeight;                   //字体的磅数  
  12.   
  13. BYTE   lfItalic;                   //斜体字体  
  14.   
  15. BYTE   lfUnderline;             //带下划线的字体  
  16.   
  17. BYTE   lfStrikeOut;             //带删除线的字体  
  18.   
  19. BYTE   lfCharSet;                 //所需的字符集  
  20.   
  21. BYTE   lfOutPrecision;       //输出的精度  
  22.   
  23. BYTE   lfClipPrecision;     //裁减的精度  
  24.   
  25. BYTE   lfQuality;                 //逻辑字体与输出设备的  
  26.   
  27.                                                                                         //实际字体之间的精度  
  28.   
  29. BYTE   lfPitchAndFamily;   //字体间距和字体集  
  30.   
  31. TCHAR   lfFaceName[LF_FACESIZE];   //字体名称  
  32.   
  33.       }   LOGFONT;    
typedef   struct   tagLOGFONT   {   //   lf    

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;  



方法一:利用CreateFont方法来创建字体

  1. SelectObject(hdc,CreateFont(0,0,0,0,0,0,0,0,XXCharSet,0,0,0,FIXED_PITCH,NULL));//至于默认值取什么,自己查表,这里不重点讲  
SelectObject(hdc,CreateFont(0,0,0,0,0,0,0,0,XXCharSet,0,0,0,FIXED_PITCH,NULL));//至于默认值取什么,自己查表,这里不重点讲


方法二:利用CreateFontIndirect方法创建字体(重点讲)

看看代码:

  1. case WM_PAINT ://前面声明了LOGFONT lonfont;  
  2.           hdc = BeginPaint (hwnd, &ps) ;  
  3.           LOGFONT logfont;
  4.          GetObject(GetStockObject(SYSTEM_FONT),sizeof(LOGFONT),&logfont);  
  5.          logfont.lfItalic=true;//使用斜体  
  6.          logfont.lfHeight=16;//字体高度为16PX  
  7.          logfont.lfWeight=20;//字体宽度为20PX  
  8.          logfont.lfCharSet=GB2312_CHARSET;//国标2312  
  9.          wsprintf(logfont.lfFaceName,TEXT("%s"),TEXT("宋体"));  
  10.          hfont=CreateFontIndirect(&logfont);//字体为宋体  
  11.          SelectObject(hdc,hfont);......//后面就是你要输出的东西  
case WM_PAINT ://前面声明了LOGFONT lonfont;
          hdc = BeginPaint (hwnd, &ps) ;
		 
		 GetObject(GetStockObject(SYSTEM_FONT),sizeof(LOGFONT),&logfont);
		 logfont.lfItalic=true;//使用斜体
		 logfont.lfHeight=16;//字体高度为16PX
		 logfont.lfWeight=20;//字体宽度为20PX
		 logfont.lfCharSet=GB2312_CHARSET;//国标2312
		 wsprintf(logfont.lfFaceName,TEXT("%s"),TEXT("宋体"));
		 hfont=CreateFontIndirect(&logfont);//字体为宋体
		 SelectObject(hdc,hfont);......//后面就是你要输出的东西


下面看看运行结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值