How To Print a Form That Is Too Large for the Screen or Page

本文介绍如何使用 Visual Basic 打印超过屏幕大小的表单或只显示部分的表单。通过将表单上的控件放置在 PictureBox 中,并利用 PictureBox 的 Bitmap 进行打印,可以实现完整打印。此外,还介绍了如何将表单分成多页打印。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 The PrintForm method prints only the portion of the form that is displayed. This article demonstrates how to print a form that is either larger than the screen or is only partially displayed.

 

If you need to print a form that is larger than the screen, or is only partially displayed, then the controls on the form must be placed in a PictureBox. This prints the bitmap that is contained in the PictureBox, instead of a screen capture of the form itself (which is what PrintForm does). Because the PictureBox's bitmap is stored in a device context in memory, you have access to the entire bitmap regardless of what is displayed.

NOTE: For the purposes of this article, the height of the form is set to 11 inches. If another paper size is desired, such as 8.5- X 14- inches, set the sTall variable to an appropriate value, for example, 14. Also note that these assignments are made in twips because this is the default scalemode for forms. If you change the scalemode, you need to change these values to match as well.

Print a Form That Is Larger Than the Screen

  1. Start a new Standard EXE project in Visual Basic. Form1 is created by default.
  2. Add two PictureBoxes to Form1.

    Avoid drawing the second PictureBox inside the first, because doing so makes the second PictureBox a member of the first. Instead, place the origin point of the second PictureBox to the left of the origin point of the first PictureBox.
  3. Right-click Picture2 and choose Send to Back.
  4. Add two labels to Picture1, leaving Picture2 empty.
  5. Add the following code to the General Declarations section of Form1:
    Private Const twipFactor = 1440
    Private Const WM_PAINT = &HF
    Private Const WM_PRINT = &H317
    Private Const PRF_CLIENT = &H4&    ' Draw the window's client area.
    Private Const PRF_CHILDREN = &H10& ' Draw all visible child windows.
    Private Const PRF_OWNED = &H20&    ' Draw all owned windows.
    
    Private Declare Function SendMessage Lib "user32" Alias _
       "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
       ByVal wParam As Long, ByVal lParam As Long) As Long
       
    Private Sub Form_Load()
       Dim sWide As Single, sTall As Single
       Dim rv As Long
    
       Me.ScaleMode = vbTwips   ' default
       sWide = 8.5
       stall = 11   ' or 14, etc.
       Me.Width = twipFactor * sWide
       Me.Height = twipFactor * stall
       With Picture1
          .Top = 0
          .Left = 0
          .Width = twipFactor * sWide
          .Height = twipFactor * stall
       End With
       With Picture2
          .Top = 0
          .Left = 0
          .Width = twipFactor * sWide
          .Height = twipFactor * stall
       End With
       With Label1
          .Caption = "Top"
          .Left = Me.Width / 2
          .Top = 0
       End With
       With Label2
          .Caption = "Bottom"
          .Top = (twipFactor * stall) - .Height * 2
          .Left = Me.Width / 2
       End With
       Me.Visible = True
       DoEvents
    
       Picture1.SetFocus
       Picture2.AutoRedraw = True
       rv = SendMessage(Picture1.hwnd, WM_PAINT, Picture2.hDC, 0)
       rv = SendMessage(Picture1.hwnd, WM_PRINT, Picture2.hDC, _
       PRF_CHILDREN + PRF_CLIENT + PRF_OWNED)
       Picture2.Picture = Picture2.Image
       Picture2.AutoRedraw = False
    
       Printer.Print ""
       Printer.PaintPicture Picture2.Picture, 0, 0
       Printer.EndDoc
    End Sub
    					
  6. Run the project.
  7. The Top and Bottom labels should appear in their respective positions regardless of whether the form is completely displayed.

Print a Form on More Than One Page

If the form you are printing is too large to fit on a page, you can use the same approach as in the preceding example with a minor addition. The PaintPicture method has a number of optional parameters. The clipping region parameters can be used to grab a portion of the bitmap image and print it.

To accomplish this, locate the following code in the previous example:

Printer.Print ""
Printer.PaintPicture Picture2.Picture, 0, 0
Printer.EndDoc
				

Replace those three lines of code with the following:

Printer.Print ""
Printer.PaintPicture Picture2.Picture, 0, 0, , , _
   0, 0, , Picture2.Height / 2
Printer.NewPage
Printer.PaintPicture Picture2.Picture, 0, 0, , , _
   0, Picture2.Height / 2, , Picture2.Height / 2
Printer.EndDoc
				

For ease of illustration, this example merely divides the form in half. You can adjust the clipping region appropriately for your needs.

NOTE: Visual Basic 6.0 Online Help states that PrintForm prints the entire form, whether the entire form is visible or not. This information is incorrect.

 

From:http://support.microsoft.com/kb/230502/EN-US/

内容概要:本文详细介绍了扫描单分子定位显微镜(scanSMLM)技术及其在三维超分辨体积成像中的应用。scanSMLM通过电调透镜(ETL)实现快速轴向扫描,结合4f检测系统将不同焦平面的荧光信号聚焦到固定成像面,从而实现快速、大视场的三维超分辨成像。文章不仅涵盖了系统硬件的设计与实现,还提供了详细的软件代码实现,包括ETL控制、3D样本模拟、体积扫描、单分子定位、3D重建和分子聚类分析等功能。此外,文章还比较了循环扫描与常规扫描模式,展示了前者在光漂白效应上的优势,并通过荧光珠校准、肌动蛋白丝、线粒体网络和流感A病毒血凝素(HA)蛋白聚类的三维成像实验,验证了系统的性能和应用潜力。最后,文章深入探讨了HA蛋白聚类与病毒感染的关系,模拟了24小时内HA聚类的动态变化,提供了从分子到细胞尺度的多尺度分析能力。 适合人群:具备生物学、物理学或工程学背景,对超分辨显微成像技术感兴趣的科研人员,尤其是从事细胞生物学、病毒学或光学成像研究的科学家和技术人员。 使用场景及目标:①理解和掌握scanSMLM技术的工作原理及其在三维超分辨成像中的应用;②学习如何通过Python代码实现完整的scanSMLM系统,包括硬件控制、图像采集、3D重建和数据分析;③应用于单分子水平研究细胞内结构和动态过程,如病毒入侵机制、蛋白质聚类等。 其他说明:本文提供的代码不仅实现了scanSMLM系统的完整工作流程,还涵盖了多种超分辨成像技术的模拟和比较,如STED、GSDIM等。此外,文章还强调了系统在硬件改动小、成像速度快等方面的优势,为研究人员提供了从理论到实践的全面指导。
内容概要:本文详细介绍了基于Seggiani提出的渣层计算模型,针对Prenflo气流床气化炉中炉渣的积累和流动进行了模拟。模型不仅集成了三维代码以提供气化炉内部的温度和浓度分布,还探讨了操作条件变化对炉渣行为的影响。文章通过Python代码实现了模型的核心功能,包括炉渣粘度模型、流动速率计算、厚度更新、与三维模型的集成以及可视化展示。此外,还扩展了模型以考虑炉渣组成对特性的影响,并引入了Bingham流体模型,更精确地描述了含未溶解颗粒的熔渣流动。最后,通过实例展示了氧气-蒸汽流量增加2%时的动态响应,分析了温度、流动特性和渣层分布的变化。 适合人群:从事煤气化技术研究的专业人士、化工过程模拟工程师、以及对工业气化炉操作优化感兴趣的科研人员。 使用场景及目标:①评估不同操作条件下气化炉内炉渣的行为变化;②预测并优化气化炉的操作参数(如温度、氧煤比等),以防止炉渣堵塞;③为工业气化炉的设计和操作提供理论支持和技术指导。 其他说明:该模型的实现基于理论公式和经验数据,为确保模型准确性,实际应用中需要根据具体气化炉的数据进行参数校准。模型还考虑了多个物理场的耦合,包括质量、动量和能量守恒方程,能够模拟不同操作条件下的渣层演变。此外,提供了稳态求解器和动态模拟工具,可用于扰动测试和工业应用案例分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值