【发布时间】:2020-09-11 23:43:50
【问题描述】:
我正在处理一个带有一些 GDI 绘图的 MFC 项目。
我使用DC.DrawText 使用LOGFONT 和lfEscapement = 900 将垂直文本绘制到DC 中。
当我以所需的垂直格式使用DT_NOCLIP 时,将输出文本。
然而,为了使这个文本居中,我使用DT_CALCRECT 参数调用DC.DrawText。
我认识到,尽管文本确实是垂直绘制的,但 CRect 的宽度更大
比身高。
我的直觉告诉我,垂直绘制的文本的高度应该大于宽度。
我没有包括使文本居中的计算。问题是当我实现垂直居中时我可以依赖什么。
DC.DrawText 和 DT_CALCRECT 是否会忽略擒纵机构?
void CMFCFontTestDlg::OnPaint()
{
CPaintDC dc(this); // Gerätekontext zum Zeichnen
if (IsIconic())
{
...
}
else
{
CDialogEx::OnPaint();
CRect clTextRect;
CFont myFont;
myFont.CreateFont(12, 0, 900, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, _T("Tahoma"));
CFont* oldFont = dc.SelectObject(&myFont);
dc.DrawText(_T("000000"), clTextRect, DT_CALCRECT);
clTextRect.MoveToXY(100, 100);
dc.DrawText(_T("000000"), clTextRect, DT_NOCLIP);
dc.SelectObject(oldFont);
}
}
【问题讨论】:
标签: c++ mfc gdi rect vertical-text