Я новичок в GDI + и пытаюсь изменить программу так, чтобы она рисовала черный прямоугольник над указанным объектом, а затем отображала текст, описывающий, что такое закрытый объект.Мне удалось отобразить черный прямоугольник, но я застрял при работе GdipDrawString.Я достиг точки, когда я больше не получаю никаких ошибок компиляции или выполнения, но текст по-прежнему не отображается заметно.
Вот упрощенная версия функции с вызовом GdipDrawString:
def doPaint(hwnd):
rect = RECT()
windll.user32.GetClientRect(c_int(hwnd), byref(rect))
ps = PAINTSTRUCT()
hdc = windll.user32.BeginPaint(c_int(hwnd), byref(ps))
windll.user32.FillRect(hdc, byref(rect), blackBrush)
gdiplus.GdipDrawString("TEST", font, whiteBrush, byref(rect))
windll.user32.EndPaint(c_int(hwnd), byref(ps))
Вот определения некоторых наиболее значимых произведений:
blackBrush = windll.gdi32.CreateSolidBrush(blackColor)
whiteBrush = windll.gdi32.CreateSolidBrush(whiteColor)
class RECT(Structure):
_fields_ = [('left', c_long),
('top', c_long),
('right', c_long),
('bottom', c_long)]
font = windll.gdi32.CreateFontW(48, 0, 0, 0, weight, False, False, False,
charSet, outPrecision, clipPrecision, quality, family | pitch, "")
Любое руководство будет высоко ценится!Я использовал строковый литерал для простоты во время тестирования и поиграл с указанными значениями шрифта, потому что я не уверен, почему иначе FillRect будет работать, но не DrawString.Меняя местами кисти, используемые для FillRect и DrawString, вы получите белый прямоугольник без текста.