求打印机的物理边距问题

XUZIFENG 2003-08-31 06:47:51
可否告诉我在 VB中如何得到打印机打印出得物理边距
物理边距就是打印机在打印纸的上下左右始终有一些打印不出来的边距。
...全文
232 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
XUZIFENG 2003-09-18
  • 打赏
  • 举报
回复
我查到了要加以下语句
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 Long

Private Const PHYSICALWIDTH = 110
Private Const PHYSICALHEIGHT = 111
Private Const PHYSICALOFFSETX = 112
Private Const PHYSICALOFFSETY = 113

Private 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分

XUZIFENG 2003-09-17
  • 打赏
  • 举报
回复
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long

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


watt 2003-09-17
  • 打赏
  • 举报
回复
一个返回的是物理宽度,一个返加的是有效宽度,单位是点,你可以用DeviceCap函数取打印机的每点缇数,然后换算为缇。我的代码是好用的,我已经用了好长时间了。实际上我们可以打印到 0 边距,但好象是为了保护打印机,而设置了一个边距。
XUZIFENG 2003-09-14
  • 打赏
  • 举报
回复
诉我浅薄,可否请 watt(瓦特) 将代码写完整一些。
XUZIFENG 2003-09-13
  • 打赏
  • 举报
回复
物理边距应该是不可能设置的,否着打印机厂家就不会吹自己的打印机是无边距的。
我试下watt(瓦特) 的代码不知行不行。
XUZIFENG 2003-09-12
  • 打赏
  • 举报
回复
可是我查过 C语言好像可得到 我没试过。
hzybc 2003-09-12
  • 打赏
  • 举报
回复
可以通过
Printer.CurrentX = X '横坐标
Printer.CurrentY = Y '竖坐标
来设置上下左右的打印位置
一元7毛6 2003-09-12
  • 打赏
  • 举报
回复
那么是否可以通过代码设置物理边距?
watt 2003-09-12
  • 打赏
  • 举报
回复
lngPrinterWidth = GetDeviceCaps(PrinterDC, PHYSICALWIDTH)
lngPrinterScaleWidth = GetDeviceCaps(PrinterDC, HORZRES)
Do you know?
一元7毛6 2003-09-11
  • 打赏
  • 举报
回复
不可能得到吧?
XUZIFENG 2003-09-10
  • 打赏
  • 举报
回复
up
XUZIFENG 2003-09-02
  • 打赏
  • 举报
回复
up
XUZIFENG 2003-09-02
  • 打赏
  • 举报
回复
up
XUZIFENG 2003-09-01
  • 打赏
  • 举报
回复
up
hxy2003 2003-09-01
  • 打赏
  • 举报
回复
UP
XUZIFENG 2003-09-01
  • 打赏
  • 举报
回复
UP
htao007 2003-08-31
  • 打赏
  • 举报
回复
Printer.ScaleLeft = -((Printer.Width - PFrm.Width) / 2)
Printer.ScaleTop = -((Printer.Height - PFrm.Height) _
/ 2)
pfrm is a form

htao007 2003-08-31
  • 打赏
  • 举报
回复
观望中
bbgbianbaogui 2003-08-31
  • 打赏
  • 举报
回复
up

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧