检查这个msdn链路
和这里
另外,我更建议也使用打印预览,因为它可以调整页边距。这是关于打印预览的链接。但在这些链接之间,我建议使用以下代码..
打印比屏幕更大的窗体
- 在Visual中启动一个新的标准EXE项目。默认情况下创建Form1。
- 将两个PictureBoxes添加到Form1。
避免在第一个PictureBox中绘制第二个PictureBox,因为这样做会使第二个PictureBox成为第一个的成员。相反,将第二个PictureBox的起始点放置在第一个PictureBox的起始点的左侧。
- 右键单击Picture2并选择Send to Back。
- 向Picture1添加两个标签,使Picture2为空。
- 将以下代码添加到Form1的常规声明部分:
twipFactor = 1440私人Const WM_PAINT = &HF私人Const WM_PRINT =&H 317私人Const PRF_CLIENT = &H4&‘绘制窗口的工作区。私有Const PRF_CHILDREN = &H10&‘绘制所有可见子窗口。PRF_OWNED = &H20&‘绘制所有拥有的窗口。私有声明函数SendMessage Lib "user32“Alias _ "SendMessageA”(ByVal hwnd As Long,ByVal wMsg As Long,_ ByVal wParam As Long,ByVal lParam As Long)与Long Private Sub Form_Load() Dim sWide相同,sTall As Single Me.ScaleMode = vbTwips‘default sWide = 8.5 stall = 11’或14,Me.Width = twipFactor * sWide Me.Height = twipFactor * twipFactor * Picture1 .Top =0 .Width =0 .Width = twipFactor * sWide .Height = twipFactor *失速端与Picture2 .Top =0 .Left =0.Width=.Top*en19#=*以= "Top“=/2.Top =0结束Label2 .Caption =“底部”.Top = (twipFactor *.Top)- .Height *2 .Left = Me.Width /2结束,Me.Visible = True DoEvents Picture1.Picture1.hwnd= True rv = SendMessage(Picture1.hwnd ),WM_PAINT,Picture2.hDC,0) rv = SendMessage(Picture1.hwnd,WM_PRINT,Picture2.hDC,_ PRF_CHILDREN + PRF_CLIENT + PRF_OWNED)
- 负责这个项目。
- 无论窗体是否完全显示,顶部和底部标签都应显示在各自的位置上。
这段代码可以让我们调整表单快照的宽度和高度,所以以后我们想要打印它,它只需要按照我们设置的方式来处理。