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

创建字体有两种方法

1CreateFont

[cpp] view plaincopyprint?
  1. BOOL   CreateFont(
  2. int   nHeight,                       //字体的高度
  3. int   nWidth,                         //字体的宽度
  4. int   nEscapement,               //字体显示的角度
  5. int   nOrientation,             //字体的角度
  6. int   nWeight,                       //字体的磅数
  7. BYTE   bItalic,                     //斜体字体
  8. BYTE   bUnderline,               //带下划线的字体
  9. BYTE   cStrikeOut,               //带删除线的字体
  10. BYTE   nCharSet,                   //所需的字符集
  11. BYTE   nOutPrecision,         //输出的精度
  12. BYTE   nClipPrecision,       //裁减的精度
  13. BYTE   nQuality,                   //逻辑字体与输出设备的实际
  14. //字体之间的精度
  15. BYTE   nPitchAndFamily,     //字体间距和字体集
  16. LPCTSTR   lpszFacename       //字体名称
  17. );
 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的定义:

[cpp] view plaincopyprint?
  1. typedef   struct   tagLOGFONT   {   //   lf
  2. LONG   lfHeight;                   //字体的高度
  3. LONG   lfWidth;                     //字体的宽度
  4. LONG   lfEscapement;           //字体显示的角度
  5. LONG   lfOrientation;         //字体的角度
  6. LONG   lfWeight;                   //字体的磅数
  7. BYTE   lfItalic;                   //斜体字体
  8. BYTE   lfUnderline;             //带下划线的字体
  9. BYTE   lfStrikeOut;             //带删除线的字体
  10. BYTE   lfCharSet;                 //所需的字符集
  11. BYTE   lfOutPrecision;       //输出的精度
  12. BYTE   lfClipPrecision;     //裁减的精度
  13. BYTE   lfQuality;                 //逻辑字体与输出设备的
  14. //实际字体之间的精度
  15. BYTE   lfPitchAndFamily;   //字体间距和字体集
  16. TCHAR   lfFaceName[LF_FACESIZE];   //字体名称
  17. }   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方法来创建字体

[cpp] view plaincopyprint?
  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方法创建字体(重点讲)

看看代码:

[cpp] view plaincopyprint?
  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;//字体高度为16PXlogfont.lfWeight=20;//字体宽度为20PXlogfont.lfCharSet=GB2312_CHARSET;//国标2312wsprintf(logfont.lfFaceName,TEXT("%s"),TEXT("宋体"));hfont=CreateFontIndirect(&logfont);//字体为宋体SelectObject(hdc,hfont);......//后面就是你要输出的东西

下面看看运行结果:

创建字体CreateFont,CreateFontIndirect相关推荐

  1. VS2019 MFC CreateFontW 创建字体函数详细解读

    CreateFontW 函数 (wingdi.h) 项目 2022/09/28 4 个参与者 反馈 CreateFont 函数创建具有指定特征的逻辑字体. 随后可将逻辑字体选为任何设备的字体. 语法 ...

  2. Android字体占有内存,android随意创建字体对象引发的应用程序运行时占用内存过大...

    android随意创建字体对象引发的应用程序运行时占用内存过大 在实际开发android项目过程中,由于是初次设置android系统没有的字体,所以用到了一个外部文件FounderFineRoundS ...

  3. 无法找到或创建字体'SansSerif'.某些字符可能无法正确显示或打印。

    无法找到或创建字体'SansSerif'.某些字符可能无法正确显示或打印. 原因:繁体CAD生成的PDF造成的. /Files/cnaspnet/SansSerif.rar 转载于:https://w ...

  4. Creating a Font for Apps and Games with Glyphs 如何使用Glyphs为应用和游戏创建字体 Lynda课程中文字幕

    Creating a Font for Apps and Games with Glyphs 中文字幕 如何使用Glyphs为应用和游戏创建字体 中文字幕Creating a Font for App ...

  5. docx_demos(创建文档类Document及属性方法, 创建段落文本类Paragraph及段落格式设置, 创建字体设置类Run及属性等)

    """ docx_demos.py(创建文档类Document及属性方法, 创建段落文本类Paragraph及段落格式设置, 创建字体设置类Run及属性等)使用:一.创建 ...

  6. 手写英文油漆字体字体_通过手写创建字体

    手写英文油漆字体字体 At YourFonts.com you can create a font based on a sample of your handwriting, then use it ...

  7. (24)ObjectARX2015 + vs2012创建字体样式

    1. 说明         AutoCAD 中可以使用 STYLE 命令创建新的字体样式,包括                 设置样式名.                 选择字体文件.       ...

  8. 41.设置windows系统字体CreateFont、CreateFontIndirect、GetStockObject

    设置字体,建议在WM_CREATE消息处理中进行设置 设置系统字体有多种方法 方法一:CreateFont函数设置每一个参数 HFONT hFont = CreateFont(80,0,0,0,0,0 ...

  9. bmp font 如何创建字体文件(图片字)

    在游戏制作的过程中,总会有特殊的需求,比如一个暴击或者获得奖励提示什么的,是需要一个好看的图片来展示的,但是如果有些字是通用的,比如数字,不能每一个数儿都让美术出一个图,只需要0-9,这10张图片就可 ...

最新文章

  1. 通过Dapr实现一个简单的基于.net的微服务电商系统(十九)——分布式事务之Saga模式...
  2. 实验6.2 定义一个基类BaseClass,观察构造函数和析构函数的执行情况。
  3. F5讲坛:虚拟化数据中心的安全问题-F5白皮书
  4. OFFICE技术讲座:边框底纹对布局的影响
  5. 记录 Kindle Fire HDX 7 安装 Google Play 服务过程
  6. 在VC下实现串口通讯
  7. 昂达 v891 v1 终于 删除 windows 分区 并且恢复了容量。
  8. 【面经】华为OD软件测试
  9. C#Application.DoEvents();的作用。
  10. java 写一个HelloJavaWorld你好世界输出到操作系统文件Hello.txt文件中
  11. ubuntu播放mp4的插件
  12. Dell电脑 两块硬盘的efi启动分配
  13. CUIT CTF WriteUp-Code100
  14. 有限元法的学习(一)
  15. VisualSVN Server版本库搭建
  16. 网页设计作业 仿苏宁易购商城网站设计——仿苏宁易购官网商城(1页) HTML+CSS+JavaScript web网页大作业
  17. 【4.0】 数学建模中拟合算法详解|内附清晰图片和详细代码实现
  18. ceb怎么转换成word_pdf怎么转换成Word?分享PDF转word3种方法!
  19. 这些牛人,你能看的他们的脸
  20. Luminar AI for Mac v1.5.0 AI照片编辑器

热门文章

  1. 学习记录:python GoPUP获取百度指数动态数据对比看国人野性消费
  2. SQL性能优化15个小技巧
  3. 【蓝桥杯回力篇】蓝桥模拟赛【摆烂day1】
  4. 【BZOJ2440】【中山市选2011】完全平方数
  5. canvas 画正圆
  6. TCP---之TCPSocket与TCPServer
  7. Linux 的Apache服务之https与网页重写
  8. 买对的不买贵的 慧眼识别宇瞻DDR真假内存
  9. delphi版的二次开发
  10. 使用 Indy 的 TIdSMTP, TIdPOP3收发邮件在验证账户的时候出现错误乱码解决方法