我正在处理带有一些GDI图纸的MFC项目。我使用DC.DrawText
和DC
将垂直文本绘制到LOGFONT
中。当我以所需的垂直格式使用lfEscapement = 900
时,将输出文本。但是,为了使本文居中,我使用了DT_NOCLIP
参数来调用DC.DrawText
。我认识到,尽管文本确实是垂直绘制的,但DT_CALCRECT
的宽度较大比高度。我的直觉告诉我,垂直绘制的文字的高度应大于宽度。我没有包括将文本居中的计算。问题只是实现垂直居中时可以依靠什么。
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);
}
}
我在功能的注释中找到了有关它的信息。DrawTextEx
。但是,请注意,https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-drawtextexa的文档都没有对此做任何说明,DrawText
标志的文档也没有任何说明。如果使用DT_CALCRECT
而不是DrawText
,则可能会被忽略。我通过“此页面有帮助吗”告知MS。反馈的可能性。
备注
DrawTextEx
功能仅支持其转义符和方向都为零。设备上下文的文本对齐方式必须包含
DrawTextEx
,TA_LEFT
和TA_TOP
标志。