1. Gdiplus::Font font(_T("微软雅黑"), (Gdiplus::REAL)130);
  2. Gdiplus::RectF orgin(0.0f, 100.0f, nWidth, 200.0f);
  3. Gdiplus::StringFormat stringformat;
  4. stringformat.SetAlignment(Gdiplus::StringAlignmentCenter);
  5. //stringformat.SetLineAlignment(Gdiplus::StringAlignmentCenter);
  6. Gdiplus::SolidBrush solidBrush(Gdiplus::Color(255, 255, 0, 0));
  7. graphics.DrawString(strFailedContent.c_str(), -1, &font, orgin, &stringformat, &solidBrush);

  函数如下

  1. float GetTextWidthFloor(const wstring& strText, const Gdiplus::Font& font)
  2. {
  3. Gdiplus::StringFormat stringformat(Gdiplus::StringAlignmentNear);
  4.  
  5. Gdiplus::GraphicsPath graphicsPathObj;
  6. Gdiplus::FontFamily fontfamily;
  7. font.GetFamily(&fontfamily);
  8.  
  9. Gdiplus::RectF rcBound;
  10. graphicsPathObj.AddString(strText.c_str(), -1, &fontfamily, font.GetStyle(), font.GetSize(), Gdiplus::PointF(0, 0), &stringformat);
  11. graphicsPathObj.GetBounds(&rcBound);
  12.  
  13. return (float)(rcBound.Width);
  14. }
  15.  
  16. int GetTextWidth(const wstring& strText, const Gdiplus::Font& font)
  17. {
  18. // calculate spaces width of text head
  19. // due to gdiplus do not care about it
  20. int nHeadSpace = 0;
  21. int nLen = strText.size();
  22. for (int i=0; i<nLen; ++i)
  23. {
  24. if (0x20 == strText.at(i))
  25. nHeadSpace++;
  26. else{
  27. break;
  28. }
  29. }
  30.  
  31. // calculate space width
  32. static float fSpaceWidth = 0.0f;
  33. if ((fSpaceWidth >= -0.00001f && fSpaceWidth <= 0.00001f) && nHeadSpace > 0)
  34. {
  35. fSpaceWidth = GetTextWidthFloor(_T("a b"), font) - GetTextWidthFloor(_T("ab"), font);
  36. }
  37.  
  38. float fResult = GetTextWidthFloor(strText, font) + (float)nHeadSpace * fSpaceWidth;
  39.  
  40. return (int)fResult + 1;
  41. }

  

MFC 根据字符宽度居中的更多相关文章

  1. PDF 补丁丁 0.5.0.2713 发布(替换字库功能修正字符宽度问题)

    新版本替换字库后,采用新字库的字符宽度.基本上可以满足一般的字库替换需求.请下载新版本测试.

  2. 获取字符宽度:并非自适应。coretext去计算

    获取字符宽度:并非自适应.coretext去计算 UniChar ch = [ns_str characterAtIndex:0]; CGGlyph glyph = 0; CTFontGetGlyph ...

  3. ZUFE 1035 字符宽度编码(字符串)

    Time Limit: 1 Sec  Memory Limit: 128 MB Description 你的任务是编写一个程序实现简单的字符宽度编码方法.规则如下:将任何2~9个相同字符的序列编码成2 ...

  4. 关于Html无宽度居中

    代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title ...

  5. 小程序 将图片文字变成一整张图片海报(判断其中字符串宽度可通过计算字符串.length*字符宽度)

    //test.xml<canvas bindtap='showhaibao' canvas-id="myCanvas" style="width:{{canvasw ...

  6. js高度line-height及宽度text-align:center居中插件

    1.高度居中---在高度设为100%,无法直接使用line-height:100%;会不起效果 这是用于应对height:100%的插件 /** * 高度居中函数,用于应对高度设为100%时的居中 * ...

  7. 【转】MFC CreateFont 用法

    中国人自古就有自右至左.从上到下书写汉字的习惯.而当我们在自己所编写的应用程序中使用输出函数输出的总是自左至右的横排文字.有没有可能在我们的应用程序中实现竖写汉字的效果呢?笔者偶然发现了一种利用VC实 ...

  8. 通过编写串口助手工具学习MFC过程——(二)通过“打开串口”按钮了解基本操作

    通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ...

  9. EasyPR--开发详解(7)字符分割

    大家好,好久不见了. 一转眼距离上一篇博客已经是4个月前的事了.要问博主这段时间去干了什么,我只能说:我去“外面看了看”. 图1 我想去看看 在外面跟几家创业公司谈了谈,交流了一些大数据与机器视觉相关 ...

随机推荐

  1. JuJu团队1月2号工作汇报

    JuJu团队1月2号工作汇报 JuJu   Scrum 团队成员 今日工作 剩余任务 困难 飞飞 -- 测试dataloader 无 婷婷 调试代码 提升acc 无 恩升 -- 测试dataloade ...

  2. layerui上传文件

    参考: http://www.layui.com/doc/modules/upload.html <1> 文件上传(以下函数必须要在js文件加载时执行) upload.render({ e ...

  3. MyEclipse8.5 + jdk 1.6.0_43 + tomcat6 + maven 3.0.4 + win7 32位 ,环境搭建并看到“hello world”

    一.前期准备 1.首先安装jdk,具体略,用java -version在cmd中看到下图所示就说明安装好了 2.安装tomcat6,具体略,在浏览器中输入http://localhost:8080/, ...

  4. sqli-labs level 2

    来到第第二关 首先在后面添加一个 单引号看下报错信息 发现这里多多了一个引号  尝试去掉单引号看下回显结果   :    and 1=2 可以发现这里不需要添加单引号进行闭合,可以直接控制,所以接下来 ...

  5. WINccflexiable2008 的水箱控制上位机HMI仿真

    步骤1 将PLC程序编写完成,CPU为314-2DP 符号表中的符号可以被所有逻辑块调用 步骤2 组态PLC300与西门子触摸屏170系列 TP177B CLOLOR PN/DP的MPI通信. 步骤3 ...

  6. HDU 5523:Game

    Game  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 131072/131072 K (Java/Others) 问题描述 XY在玩一 ...

  7. HiBench成长笔记——(4) HiBench测试Spark SQL

    很多内容之前的博客已经提过,这里不再赘述,详细内容参照本系列前面的博客:https://www.cnblogs.com/ratels/p/10970905.html 和 https://www.cnb ...

  8. NMEA-0183

    GPGSA( 当前卫星信息)    例:$GPGSA,A,3,01,20,19,13,,,,,,,,,40.4,24.4,32.2*0A    字段0:$GPGSA,语句ID,表明该语句为GPS DO ...

  9. oracle练习-day04

    .什么是PL.PL.普通变量和常量使用) :) :.引用型变量 .记录型变量.条件分支语法:if 条件 .根据输入的年龄判断小于输出未成年人,成年人,以上老年人):  .loop循环语法:.输出到的数 ...

  10. 兼容和Error

    兼容 IE兼容 ie没有forEach if(!Array.prototype.forEach) { Array.prototype.forEach = function(fun){ var len ...