1,488
社区成员
发帖
与我相关
我的任务
分享
Option Explicit
Private Declare Function SetMapMode Lib "gdi32" (ByVal hdc As Long, ByVal nMapMode As Long) As Long
Private Declare Function SetWindowExtEx Lib "gdi32" (ByVal hdc As Long, ByVal nX As Long, ByVal nY As Long, lpSize As Any) As Long
Private Declare Function SetViewportExtEx Lib "gdi32" (ByVal hdc As Long, ByVal nX As Long, ByVal nY As Long, lpSize As Any) As Long
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
Private Const MM_ANISOTROPIC = 8
Private Const LOGPIXELSX = 88 ' Logical pixels/inch in X
Private Const LOGPIXELSY = 90 ' Logical pixels/inch in Y
Sub OnPrepareDC(ByVal PrinterDC As Long, ByVal Width As Long, ByVal Height As Long)
Dim xExt As Long, yExt As Long
Dim xLogPixPerInch As Long, yLogPixPerInch As Long
SetMapMode PrinterDC, MM_ANISOTROPIC
SetWindowExtEx PrinterDC, Width, Height, ByVal 0&
xLogPixPerInch = GetDeviceCaps(PrinterDC, LOGPIXELSX)
yLogPixPerInch = GetDeviceCaps(PrinterDC, LOGPIXELSY)
xExt = Width * xLogPixPerInch / 96
yExt = Height * yLogPixPerInch / 96
SetViewportExtEx PrinterDC, xExt, yExt, ByVal 0&
End Sub
dim w as single
w = Form1.ScaleX(80,vbPixels,VbInches) '窗体上将像素换算成英寸'
w = Printer.ScaleX(w,vbInches,vbPixels) '打印机上将英寸换算成像素'