如何使用 windows GDI 设置打印字体类型和大小?
How to set font type and size for printing using windows GDI?
我的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()
使用CreateFont然后select将字体输入到设备上下文中,例如:
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
可以更准确地计算坐标。
我的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()
使用CreateFont然后select将字体输入到设备上下文中,例如:
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
可以更准确地计算坐标。