可否告诉我在 VB中如何得到打印机打印出得物理边距
物理边距就是打印机在打印纸的上下左右始终有一些打印不出来的边距。

解决方案 »

  1.   

    Printer.ScaleLeft = -((Printer.Width - PFrm.Width) / 2)
    Printer.ScaleTop = -((Printer.Height - PFrm.Height) _
       / 2)
    pfrm is a form
      

  2.   

    lngPrinterWidth = GetDeviceCaps(PrinterDC, PHYSICALWIDTH)
    lngPrinterScaleWidth = GetDeviceCaps(PrinterDC, HORZRES)
    Do you know?
      

  3.   

    可以通过
    Printer.CurrentX = X      '横坐标
    Printer.CurrentY = Y      '竖坐标
    来设置上下左右的打印位置
      

  4.   

    物理边距应该是不可能设置的,否着打印机厂家就不会吹自己的打印机是无边距的。
    我试下watt(瓦特) 的代码不知行不行。
      

  5.   

    诉我浅薄,可否请 watt(瓦特) 将代码写完整一些。
      

  6.   

    一个返回的是物理宽度,一个返加的是有效宽度,单位是点,你可以用DeviceCap函数取打印机的每点缇数,然后换算为缇。我的代码是好用的,我已经用了好长时间了。实际上我们可以打印到 0 边距,但好象是为了保护打印机,而设置了一个边距。
      

  7.   

    Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As LongPrivate Sub Command1_Click()
    MsgBox GetDeviceCaps(Printer.hdc, PHYSICALHEIGHT)
    msgbox GetDeviceCaps(Printer.hdC, PHYSICALWIDTH)
    msgbox GetDeviceCaps(Printer.hdC, HORZRES)
    End Sub
    我写了以上代码可是总是得出数为1024
    是否我 printer.hdc 填错了,那该填什么,可否教我一下
    再一个问题,如我想将边距设为零是否只要将 有效宽度付值为物理宽度就可
      

  8.   

    我查到了要加以下语句
    Private Const PHYSICALWIDTH = 110
    Private Const PHYSICALHEIGHT = 111
    Private Const PHYSICALOFFSETX = 112
    Private Const PHYSICALOFFSETY = 113
    要付值,我暂未知其用意。完整为
    Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hDC As Long, ByVal nIndex As Long) As LongPrivate Const PHYSICALWIDTH = 110
    Private Const PHYSICALHEIGHT = 111
    Private Const PHYSICALOFFSETX = 112
    Private Const PHYSICALOFFSETY = 113Private Sub Command1_Click()
    MsgBox GetDeviceCaps(Printer.hdc, PHYSICALHEIGHT)
    msgbox GetDeviceCaps(Printer.hdC, PHYSICALWIDTH)
    msgbox GetDeviceCaps(Printer.hdC, HORZRES)
    End Sub我查了一下大多数无边距打印机,我想一般打印机是不可能打出无边距的,最起吗底边打印不出来无边距,因为打印机无法夹到纸张了。我试了一下 EPSON 和佳能的打印机驱动,发现EPSON 用无边距打印时图片会有一些变大,不知为何,而佳能的有一项设置可选无边距扩展量,将此值为零就可,原大小无边距打印。非常感谢 watt(瓦特)  已结分 watt(瓦特) 100分