Я работаю над проектом MF C с некоторыми чертежами GDI. Я использую 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);
}
}