Do Until RSgcxmaj.EOF If i > 8 Then
i = 0
Printer.NewPage
End If
'打印一个横向'打印一个长矩形框
Printer.DrawWidth = 50
Printer.Line (576, 1400 + i * 576 * 2.5 + 160 * i)-(11180, 1400 + (i + 1) * 576 * 2.5 + 160 * i), , B
'打印两条横线
Printer.DrawWidth = 30
y = 1440 + i * 576 * 2.5 + 160 * i
Printer.Line (2880, y)-(2880, y + 2.5 * 576)
Printer.Line (4000, y)-(4000, y + 2.5 * 576)
'打印案卷题名4字 我要把按卷题名打印在两条横线的中心位置
Printer.Print " "
hPrintDc = Printer.hdc
Outstring = "案卷题名"
lf.lfEscapement = 900
lf.lfHeight = (DESIREDFONTSIZE * 30) / Printer.TwipsPerPixelY
lf.lfCharSet = 1
lf.lfFaceName = "华文中宋" + Chr(0)
hFont = CreateFontIndirect(lf)
hOldfont = SelectObject(hPrintDc, hFont)
y = 1200 + i * 576 * 2.4 + 150 * i
result = TextOut(hPrintDc, 3000, y + 1325, Outstring, LenB(StrConv(Outstring, vbFromUnicode))) '这个里面的坐标该怎么设置呀!才能每次都使案卷题名打在两条线的当中
result = SelectObject(hPrintDc, hOldfont)
result = DeleteObject(hFont)
.movenext
i=I+1
loop
i = 0
Printer.NewPage
End If
'打印一个横向'打印一个长矩形框
Printer.DrawWidth = 50
Printer.Line (576, 1400 + i * 576 * 2.5 + 160 * i)-(11180, 1400 + (i + 1) * 576 * 2.5 + 160 * i), , B
'打印两条横线
Printer.DrawWidth = 30
y = 1440 + i * 576 * 2.5 + 160 * i
Printer.Line (2880, y)-(2880, y + 2.5 * 576)
Printer.Line (4000, y)-(4000, y + 2.5 * 576)
'打印案卷题名4字 我要把按卷题名打印在两条横线的中心位置
Printer.Print " "
hPrintDc = Printer.hdc
Outstring = "案卷题名"
lf.lfEscapement = 900
lf.lfHeight = (DESIREDFONTSIZE * 30) / Printer.TwipsPerPixelY
lf.lfCharSet = 1
lf.lfFaceName = "华文中宋" + Chr(0)
hFont = CreateFontIndirect(lf)
hOldfont = SelectObject(hPrintDc, hFont)
y = 1200 + i * 576 * 2.4 + 150 * i
result = TextOut(hPrintDc, 3000, y + 1325, Outstring, LenB(StrConv(Outstring, vbFromUnicode))) '这个里面的坐标该怎么设置呀!才能每次都使案卷题名打在两条线的当中
result = SelectObject(hPrintDc, hOldfont)
result = DeleteObject(hFont)
.movenext
i=I+1
loop
Printer.Line (4000, y)-(4000, y + 2.5 * 576)
问题是怎么判断文字的坐标 textout的坐标系好象和printer的坐标系不是同一个坐标系呀,如果我把textout的Yy坐标设置为
y=1440+(i+1)*576*2.5+160*i(就是打印横线的y坐标)的话,循环打出来的案卷题名不在两条横线当中呀
拜托大家了! 我实在想不出什么办法了呀! textout的x,y坐标和printer的坐标的坐标单位不一样! 怎么办呀!老板又催得急! 不要改printer.ScaleMode 不然的话我的打印位置又要重新排列了呀!
result = TextOut(hPrintDc, _
Printer.ScaleX(3000, vbTwips, vbPixels), _
Printer.ScaleY(y + 1325, vbTwips, vbPixels), _
Outstring, _
LenB(StrConv(Outstring, vbFromUnicode)))
我是向打印机输出的! 我也计算过了! 如果textout的坐标设置为(3000.500) (3000,1000)
,(3000,1500) 我用直尺量过 每差500就相差2.5公分(具体数字记不得了,就用这个数字代替),
如果按照这个逻辑,那么(3000,500)这个应该距离纸张的的上顶部为2.5公分,但是我量了一下 远比这个数值小!
我把格式做了个word文件 请你指点 最好给我写个代码 这个问题我都头大了