c++ - MFC中如何把单独的文字一个一个画出来?

标签 c++ mfc

我试图在 MFC 中一个接一个地绘制两条文本,因为它们将是同一文本的一部分。现在我正在绘制它们,因为它们只是一根绳子:

CString text1 = "A text";
CString text2 = "A second text";
CString textToDraw = text1 + text2;
CDC* dc = GetDC(); //assume that this is initialized elsewhere
dc->TextOut(0, 0, textToDraw);

将两个文本绘制为一个很简单,因为我只需要找到它们应该开始绘制的位置即可。我面临的问题是如何计算应该绘制第二个文本的新 X 坐标(考虑到可以在运行时选择文本,因此它们没有已知长度):

dc->TextOut(0, 0, text1);
int X;
//how should I compute X...?
dc->TextOut(X, 0, text2);

我很感激收到的任何帮助!

最佳答案

您可以使用带有 DT_CALCRECT 标志的 DrawText() 来计算文本将占用的宽度高度,而无需实际绘制文本。以下可能是您问题的答案。

dc->TextOut(100, 100, text1);

RECT rect = { 0, 0, 0, 0 };
dc->DrawText(text1, &rect, DT_CALCRECT);

dc->TextOut(100 + rect.right, 100, text2);

关于c++ - MFC中如何把单独的文字一个一个画出来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43733669/

相关文章:

c++ - 在 C++ 中创建和使用跨平台结构

c++ - 如何定义 tesseract 用于识别(而不是训练)的字体类型?

c++ - 如何创建具有多类的 MFC 扩展 dll?

windows - 如何在 MFC 中获取 CString 宽度(对于 Unicode)?

c++ - GSL 插值错误,值必须是 x 值必须是单调递增的

c++ - QListView::doubleClicked 的插槽未被调用

c++ - 在 C++ 中确定继承对象的类型

Windows 模拟 UNIX atoh() 函数

c++ - 将数据写入由 CFileDialog 在 C++ 中创建的 .txt 文件

c++ - MFC 功能区面板名称问题