Какие есть варианты для win32con.DT_ *?Python для Windows рисовать текст - PullRequest
0 голосов
/ 22 февраля 2019

Я просто не могу найти различные опции для функции рисования текста в python для окон.Я хочу, чтобы текст, который я рисую, располагался в левом нижнем углу экрана, а не в центре вверху.если нижний левый параметр не доступен, возможен ли нижний центр?

        win32gui.DrawText(hdc, windowText, -1, rect,
        win32con.DT_CENTER | win32con.DT_VCENTER
    )

есть ли такой параметр, как

win32con.DT_LEFT | win32con.DT_BOTTOM

?

Я не могу найти любую связанную информацию в Интернетедля этого фрагмента кода в документах Microsoft или Python.

1 Ответ

0 голосов
/ 23 февраля 2019

Подробную документацию по соответствующим функциям WinAPI можно найти на сайте Microsoft:

DrawText:

параметр ...

DT_BOTTOM

Оправдывает текст в нижней части прямоугольника.Это значение используется только со значением DT_SINGLELINE.

Как указано выше, DT_BOTTOM работает только при указании DT_SINGLELINE.Поэтому вам необходимо:

win32con.DT_LEFT | win32con.DT_BOTTOM | win32con.DT_SINGLELINE


Обратите внимание, что этого будет недостаточно для рисования нескольких линий, выровненных по низу прямоугольника.В этом случае используйте флаг DT_CALCRECT, чтобы вычислить высоту текста, который нужно нарисовать.Затем сместите прямоугольник на основе высоты этого вычисленного прямоугольника.Пример:
textformat = win32con.DT_LEFT | win32con.DT_BOTTOM
calrect = win32gui.DrawText(hdc, text, -1, rect, textformat | win32con.DT_CALCRECT);

rect.top = rect.bottom - calcrect.bottom;
win32gui.DrawText(hDC, text, -1, rect, textformat)
...