Рендеринг текста на 3 пикселя слишком низок с использованием ID3DXFont::DrawText

Я пытаюсь нарисовать текст на экране, используя координаты x и y (слева и сверху соответственно), однако текст не отображается так, как ожидалось на оси y.

Я выполняю тестовую среду визуализации Direct3D9, используя ID3DXFont:: DrawTextA.

Я попытался удалить DT_TOP из параметра "Формат" и убедился, что позиция y в моем RECT правильная при вызове ID3DXFont:: DrawTextA.

D3DXCreateFontA( m_device, height, 0, weight, 0, false, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH, face, &font );

RECT rect { };
font->DrawTextA( nullptr, buffer, -1, &rect, DT_CALCRECT | DT_NOCLIP, colour );

SetRect( &rect, flags & FONT_CENTER_X ? x - rect.right / 2 : x, flags & FONT_CENTER_Y ? y - rect.bottom / 2 : y, 0, 0 );

font->DrawTextA( nullptr, buffer, -1, &rect, DT_TOP | DT_LEFT | DT_NOCLIP, colour );

Пусть х = 5 и у = 5.

При использовании следующего кода (при условии, что флаги центрирования не установлены), ожидаемый результат заключается в том, что текст будет отображаться с координатами экрана 5(x) и 5 (y).

Фактическим результатом является то, что текст отображается в 5 (х) и 8(у).

Однако, если я использую флаг FONT_CENTER_Y, то позиция y будет правильной (в расчете используется правильный y).

С уважением.

0 ответов

Другие вопросы по тегам