65.9K
CodeProject 正在变化。 阅读更多。
Home

一个强大而灵活的文本绘制函数,具有简单的标记标签

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.65/5 (19投票s)

2004年9月1日

2分钟阅读

viewsIcon

68737

downloadIcon

1478

此函数使您可以轻松绘制花哨的文本。

引言

您是否曾经想要一个更强大和灵活的文本绘制函数? 如果你想绘制如下的文本,你需要调用许多dc函数。

Hello,World.

您应该调用 SetBkColor 来更改文本颜色,并调用 SelectObject 来更改文本字体。 也许你的代码看起来像这样

create a bold font
select a bold font
draw "he"
select a original font
delete a bold font object
draw "llo, "
change a text color red.
draw "W"
change a text color original.
draw "orld."

多么无聊的代码啊! 此外,如果您使用上述代码,您很容易犯错误。 最后,我决定编写一个支持一些简单标记标签的函数。 本文将向您展示如何使用它。

函数描述

int FmtUtil::TextOut(CDC *pDC, CString &str, int x=0, int y=0, int nSpace=0);
  • pDC

    [in] 设备上下文的句柄

  • str

    [in] 要绘制的string

  • x

    [in] 指定逻辑坐标中的 x 坐标

  • [in] 指定逻辑坐标中的 y 坐标

  • nSpace

    [in] 指定行之间的间距

此函数支持以下像 HTML 一样的简单标签。 请注意,str 中包含的标签由此函数解释,并且不会绘制。 因此,如果你想绘制 [ 或 ],你应该使用 [[ 或 ]]。

  • [B][/B]

    此标签使字体变为粗体。

  • [I][/I]

    此标签使字体变为斜体。

  • [U][/U]

    此标签使字体带有下划线。

  • [Cxxxxxx][/C]

    此标签更改字体颜色。 xxxxxx 是一个颜色代码。 这是一个十六进制值,例如,红色是 FF0000。

Using the Code

如果你想在你的项目中使用它 - 请按照以下简单步骤。

  • fmttextout.hfmttextout.cpp 文件添加到您的项目。
  • 现在你可以通过调用 FmtUtil()->TextOut 来绘制文本。

以下代码是演示项目中使用的 WM_PAINT 消息处理程序

void CChildView::OnPaint() 
{
    CPaintDC dc(this); // device context for painting
    
    // TODO: Add your message handler code here
    
    // Do not call CWnd::OnPaint() for painting messages
    CString str("Hello, [/B][/B][/B]W[/B][CFE09FF]or[/C][U]ld[/U] 
          [I]Shin, YoungJin[/I]\r\naskdfljaslkfjaslkfjlkewrlkewr");
    FmtUtil()->TextOut(&dc, str, 10, 10, 8);
}

历史

  • 2004 年 8 月 30 日 - 初始版本

许可证

本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。

作者可能使用的许可证列表可以在此处找到。

© . All rights reserved.