VB form打印缩放的问题,想把form扩大打印到A4纸

不管怎么设置,都不管用,很郁闷~
代码如下:

Printer.Zoom = 8
Printer.ScaleX (200)
Printer.ScaleTop = 300
'SetPrinterScale Me

frmYuLan.PrintForm ' 将显示窗体的内容送到打印机

Printer.EndDoc
Printer.KillDoc

在网上找到一个SetPrinterScale 代码,也不管用。
Private Sub SetPrinterScale(obj As Object)

Dim pwid As Single, phgt As Single, xmid As Single, ymid As Single
Dim owid As Single, ohgt As Single

owid = obj.ScaleX(obj.ScaleWidth, obj.ScaleMode, vbTwips)
ohgt = obj.ScaleY(obj.ScaleHeight, obj.ScaleMode, vbTwips) '获取窗体以Twips表示的尺寸

pwid = Printer.ScaleX(Printer.ScaleWidth, Printer.ScaleMode, vbTwips)
phgt = Printer.ScaleY(Printer.ScaleHeight, Printer.ScaleMode, vbTwips) '获取打印机以Twips表示的尺寸

If (ohgt / owid > phgt / pwid) Then
s = phgt / ohgt
Else
s = pwid / owid
End If '计算缩放因子

pwid = obj.ScaleX(pwid, vbTwips, obj.ScaleMode) / s
phgt = obj.ScaleY(phgt, vbTwips, obj.ScaleMode) / s
'将打印机的尺寸转换成obj的坐标系统 / 缩放因子

x_mid = obj.ScaleLeft + obj.ScaleWidth / 2
y_mid = obj.ScaleTop + obj.ScaleHeight / 2 '设置打印区域的中心点坐标

Printer.Scale (x_mid - pwid / 2, y_mid - phgt / 2)-(x_mid + pwid / 2, y_mid + phgt / 2)
' 设置打印机中新的ScaleWidth和ScaleHeight

End Sub

请高手指点,多谢!:)
ps:有分了就追加。
picture打印该怎么处理。
我直接 Printer.PaintPicture Picture1, Picture1.Left, Picture1.Top, Picture1.Width, Picture1.Height
显示的是空。
另外,picturebox的滚动条怎么出现啊?
拜托了。

FORM的大小不是无限制大的,是不能超过屏幕分辨率的范围的。
这种情况可以在form中放一个picturebox,然后再加上垂直和水平滚动条,在picturebox中打印内容作为模拟显示,picturebox的大小可以超过屏幕大小的。
如果是打印的话,建议直接向printer发送print命令,不需要通过FORM.PrintForm

-------------------------
给个邮箱,发段示例代码给你。
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答