我的python程序只需要在某些位置打印文本。我正在使用Windows GDI来存档目标。
以下代码完成了这项工作,但我需要设置字体类型和大小。
import win32ui
dc = win32ui.CreateDC()
dc.CreatePrinterDC()
dc.StartDoc('Test document')
dc.StartPage()
dc.TextOut(100,2000, 'HELLO WORLD!')
dc.EndPage()
dc.EndDoc()
答案 0 :(得分:1)
使用CreateFont,然后在设备上下文中选择字体,例如:
dc.StartPage()
fontdata = { 'name':'Arial', 'height':100, 'italic':True, 'weight':win32con.FW_NORMAL}
font = win32ui.CreateFont(fontdata);
dc.SelectObject(font)
dc.TextOut(100,2000, 'HELLO WORLD!')
...
要更好地计算字体大小,请根据CreateFont
WinAPI参考使用以下内容:
def getfontsize(dc, PointSize):
inch_y = dc.GetDeviceCaps(win32con.LOGPIXELSY)
return int(-(PointSize * inch_y) / 72)
示例:现在您可以使用它在页面中心使用字体大小11进行绘制
fontsize = getfontsize(dc, 11)
fontdata = { 'name':'Consolas', 'height':fontsize}
font = win32ui.CreateFont(fontdata);
dc.SelectObject(font)
此外,LOGPIXELSY
/ LOGPIXELSY
和PHYSICALWIDTH
/ PHYSICALHEIGHT
可用于更准确地计算坐标。