打印本文 打印本文 关闭窗口 关闭窗口
用vb.net实现写字板程序报告(四)完
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2919  更新时间:2009/4/23 19:01:53  文章录入:mintao  责任编辑:mintao

所有源代码均在这里下载:

http://www.up2e.com/resource.php

用vb.net实现写字板程序报告(四)完 ---by zigz (LuHai)
luluhai@eastday.com

5)有关打印预览

起初以为很简单,但最后发现预览总是无法预览到实际文件,最终还是在微软站点上获得了相关信息,并很好的利用他到本应用程序中,而且十分成功,可以成功预览了。为了怕自己误导别人,所以把它原文也打印出来。

 

下面是两幅图片用来演示打印预览的效果。

图5在RichTextBox中的文本
图6打印预览中的文本

打印预览相关代码:

(注意!以下有关打印的代码均来自微软技术文档中)

'''' 必须确定所有的打印事件都是针对同一个 PrintDocument

    Private WithEvents pdoc As New PrintDocument()

    '''' 打印文件是一个函数性的打印事件,每当要打印时该事件被触发

    '''' 下面是一个非常快速和有用的精确计算要打印的文本是否能够被包括到整张打印页面

    ''''是我从微软站点上得到的资料,我把它应用到了我的程序中

    Private Sub pdoc_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles pdoc.PrintPage

        '''' Declare a variable to hold the position of the last printed char. Declare

        '''' as static so that subsequent PrintPage events can reference it.

        Static intCurrentChar As Int32

        '''' Initialize the font to be used for printing.

        Dim font As New font("Microsoft Sans Serif", 24)

        Dim intPrintAreaHeight, intPrintAreaWidth, marginLeft, marginTop As Int32

        With pdoc.DefaultPageSettings

            '''' Initialize local variables that contain the bounds of the printing

            '''' area rectangle.

            intPrintAreaHeight = .PaperSize.Height - .Margins.Top - .Margins.Bottom

            intPrintAreaWidth = .PaperSize.Width - .Margins.Left - .Margins.Right

 

            '''' Initialize local variables to hold margin values that will serve

            '''' as the X and Y coordinates for the upper left corner of the printing

            '''' area rectangle.

            marginLeft = .Margins.Left '''' X coordinate

            marginTop = .Margins.Top '''' Y coordinate

        End With

        '''' If the user selected Landscape mode, swap the printing area height

        '''' and width.

        If pdoc.DefaultPageSettings.Landscape Then

            Dim intTemp As Int32

            intTemp = intPrintAreaHeight

            intPrintAreaHeight = intPrintAreaWidth

            intPrintAreaWidth = intTemp

        End If

        '''' Calculate the total number of lines in the document based on the height of

        '''' the printing area and the height of the font.

        Dim intLineCount As Int32 = CInt(intPrintAreaHeight / font.Height)

        '''' Initialize the rectangle structure that defines the printing area.

        Dim rectPrintingArea As New RectangleF(marginLeft, marginTop, intPrintAreaWidth, intPrintAreaHeight)

[1] [2] [3]  下一页

打印本文 打印本文 关闭窗口 关闭窗口