Windows   发布时间:2022-05-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了windows C++如何根据文本字符串计算其绘制需占用宽度大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

分析

计算某串文本在绘制UI上需要占用的宽度,需要以下几个要素:

@H_404_10@
  • 字符串本身
  • 所使用的字体
    字体会影响所绘制的文字的宽度——那是理所当然
  • 所使用的GDI或GDI+对象
  • 方法

    GDI

    ::SELEctObject(hDC,hFont);
    //第四个参数:指向SIZE结构的指针,该结构中字符串的尺寸将被返回。
    ::GetTextExtentPoint32(hDC,str,StrLen(str),&sizeText);

    GDI+

    @H_404_10@
  • 比GDI复杂,需要使用到GDI+对象的API@H_249_24@measureString
  • Gdiplus::rectF rc1(0,5000,2000);
    Gdiplus::rectF rc2(0,0);
    g.MeasureString(str,-1,pFont,rc1,pStrFormat,&rc2);
    return rc2.Width;
    @H_404_10@
  • 其中参数4是Gdiplus::stringFormat,类似的赋值方式如下:
  • Gdiplus::stringFormat* pStrFormat = new Gdiplus::stringFormat();
            pStrFormat->SetAlignment(enHAlign);
            pStrFormat->SetLineAlignment(enVAlign);
            If_Do(nFormat != 0,pStrFormat->SetFormatFlags(nFormat));
    @H_404_10@
  • 可以参MSDN上的StringAlignment Enumeration,和StringFormatFlags Enumeration。

  • 例:SetFormatFlags传入参数StringFormatFlagsnowrap则禁用换行,否则在矩形内绘制文本时是自动换行的。

  • 还可以使用SetTextRenderingHintAPI设置文本的渲染模式,可参MSDN中关于TextRenderingHint Enumeration的资料,一般情况下使用默认的TextRenderingHintSystemDefault即可

    链接

  • GDI+学习及代码总结之------文本与字体

  • 大佬总结

    以上是大佬教程为你收集整理的windows C++如何根据文本字符串计算其绘制需占用宽度全部内容,希望文章能够帮你解决windows C++如何根据文本字符串计算其绘制需占用宽度所遇到的程序开发问题。

    如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

    本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
    如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
    标签: