VB控制打印机(共5页)_第1页
VB控制打印机(共5页)_第2页
VB控制打印机(共5页)_第3页
VB控制打印机(共5页)_第4页
VB控制打印机(共5页)_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上VB控制打印机  2013-05-17 10:48:17|  分类: |字号 订阅(转载)1简介Visual Basic(VB)给用户提供了可视化编程环境,因其简单易学、功能强大而得到了广泛的应用。VB提供了两种实现打印的办法。一般在对打印品质规定不高的场合,或者是编程项目的早期开发过程中,可以直接使用VB窗体的Printform办法实现打印。用这种办法实现打印具有编程简单、易用并且功能强大的优点,它只需要通过一行代码,基本上能打印所有内容。实现的办法就是:首先将要打印的内容在屏幕上呈现出来,然后开发人员只要

2、为窗体对象激活  PrintForm ,窗体则自动将要打印的内容发送到Printer对象上,其语法格式如下:窗体.PrintForm 。如果窗体中包括图形,那么打印前应先置窗体的AutoRedraw属性为真。这种办法虽然简单,但是它却存在着内存消耗大、打印粗糙、速度慢等缺陷,尤其对于带有滚动条的图像,这种办法只能打印当前可视的区域。在现实应用中频繁会遇到对打印品质规定很高的场合,例如打印音乐五线谱,对打印的美观、清晰度以及音符符头的位置都有很严格的规定,这种应用场合若采用VB提供的另一种基于Printer对象的打印办法则可以获得高分辨率的打印,得到很高的打印品质。在现实应用中,也可以

3、根据现实应用情况将上述两种办法结合起来使用,即:前期工作使用PrintForm 简单的打印办法将窗体的布局定下来,后期再使用基于Printer对象的打印办法实现最终的打印工作。2高分辨率打印程序开发心得 Printer对象VB的打印可以使用Printer对象。Printer对象是一个*于打印机设备的封装,它可以代表不一样的打印机,初始时,Printer对象为系统缺省的打印机,也可以使用下列语句:Set  Printer=Printers(2) (其中2代表Printers集中的第二个打印机)对打印机开展规定。Printer对象具备例如:ColorMode、Copies、Duplex、

4、Printquality等控制打印机特征的属性,提供了Newpage、EndDoc、KillDoc等控制打印过程的办法,以及大多数由窗体和图片框控件提供的图形属性和办法如:Currentx、Currenty、Textwidth、Textheight、Print、Pset、Line、PaintPicture和Circle等办法,它还拥有Font的所有属性。实现高分辨率的打印就是通过控制Printer对象的上述属性和办法完成的。 直接利用Windows公用标准对话框CommonDialog控件【打印】VB为用户提供了Windows公用标准对话框CommonDialog控件:【打开】、【文件另存为】

5、、【颜色】、【字体】、【打印】。CommonDialog控件在Visual Basic 和Microsoft Windows动态连接库Commdlg.dll例程之间提供了接口。利用公用标准对话框【打印】开发VB的打印程序,将大大缩短程序的开发周期。应用程序中要使用公用对话框,必须首先在工具箱中添加公用对话框控件。该动作通过激活【部件】对话框,选中Microsoft Common Dialog Control6.0, 单击【确定】即可。然后再将公用控件添加到窗体上并设置相应属性,该控件具有的属性有Color、Font、Print、Help等。VB提供mnuFilePrint_Click()过程供

6、用户添加开发的打印程序代码。 Printer对象控制打印的基本过程利用Printer对象开发的打印程序主要靠其提供的NewPage (打印新的一页,CurrentX、CurrentY置为新页的左上角,可完成多页功能。)、EndDoc  (将打印任务加入打印机队列)、KillDoc  (取消打印任务)控制打印过程的。一般情况下,打印程序完成多页打印时会多次执行NewPage,完毕时执行一次EndDoc将打印任务加入打印机队列。如果你在NewPage后,立即使用EndDoc,VB则不会打印额外的空白页。如果希望呈现空白页,则可在新的一页上只使用Printer.Print “&#

7、160; “打印空字符即可。为了通过Printer对象实现文本和图形的打印,获得最好的打印品质,还需要对VB控制打印机的多种属性有更深入的理解,例如打印机的坐标体系向屏幕坐标体系的转换、打印机字体尺寸的确定等。下面给出了打印程序的主框架:Private Sub mnuFilePrint_Click()    On Error Resume Next    If ActiveForm Is Nothing Then Exit Sub    With dlgCommonDialog  &#

8、160;         打印机公用对话框        .DialogTitle = "打印"        .CancelError = True        .Flags = 1         Pri

9、nter.FontSize = dlgCommonDialog.FontSize    将打印机公用对话框设置的字体大小传递给打印机         .ShowPrinter      在屏幕上呈现【打印】公用对话框         If Err <> MSComDlg.cdlCancel Then   &

10、#160;        Printer.FontTransparent = False   初始化打印的字体为不透明            SetPrinterScale Myform    匹配打印机的缩放属性与窗体的属性            Print

11、Anywhere Printer       可放置用户编写的打印对象参数化例程                                      实现字符和图形

12、的呈现Printer.NewPage           打印机坐标初始化PrintAnywhere Printer     打印另一页的内容Printer.NewPage           打印机坐标初始化            Printer.

13、EndDoc             将该任务加入打印机任务队列 不打印空白页            Printer.KillDoc           取消当前的打印任务        End If

14、    End With  End SubmwM无忧研修网 参数化绘图程序用VB开发应用程序时,如果使用参数化绘图例程开展屏幕呈现程序的开发,则在开发打印程序时,就不需再另行开发代码,从而避免了大部份的重复劳动,有效地缩短了程序的开发周期。参数化绘图例程就是:在开发例程时,为每一个例行程序提供一个OBJECT类型的参数,调用程序通过向例程的OBJECT类型参数分别传递窗体、Printer对象,就可分别完成屏幕呈现与打印机输出。 见如下示例:Sub   PrintAnywhere(Dest As Object)Dest.Print “H

15、ELLO!”Dest Is Printer Then        Printer.EndDocEnd IfEnd Sub要完成屏幕上的输出,调用 PrintAnywhere Myform 即可,而调用 PrintAnywhere Printer则完成在打印机上输出。 属性匹配与窗体缩放因为控制打印机现实绘图区域大小的属性Height和Width,由目前正在使用的纸张决定,而且可打印的区域与纸张边缘有一定距离。因而为了获得正确的打印输出结果,不能简单地将Printer对象直接传递给绘图例行程序,还必须要解决打印机的缩放属性与

16、呈现窗体属性相匹配的问题。即:保证使窗体中的打印内容以正确的大小呈现,并居于可打印区域的中间。现实上实现的是打印机的坐标体系向屏幕坐标体系的转换。具体过程是:使用打印机的ScaleX和ScaleY办法,获取以twip为企业的打印机尺寸,再利用窗体的ScaleX和ScaleY办法将这些尺寸转换为窗体中的坐标系统,从而实现以窗体的坐标系统提供打印机可打印区域大小的目的。然后,用这些尺寸作为打印机中新的ScaleWidth和ScaleHeight,即可实现属性匹配。但是,我们在打印时,频繁会遇到这样的场合在不改变窗体形状的情况下,需要扩大或缩小窗体的大小。要完成这样的工作,不仅需要完成属性匹配,还要

17、确定对象被缩放的系数。程序如下:Private Sub SetPrinterScale(obj As Object)Dim pwid As Single, phgt As Single, xmid As Single, ymid As SingleDim owid As Single, ohgt As Singleowid = obj.ScaleX(obj.ScaleWidth, obj.ScaleMode, vbTwips)ohgt = obj.ScaleY(obj.ScaleHeight, obj.ScaleMode, vbTwips)    

18、60;           获取窗体以Twips表示的尺寸pwid = Printer.ScaleX(Printer.ScaleWidth, Printer.ScaleMode, vbTwips)phgt = Printer.ScaleY(Printer.ScaleHeight, Printer.ScaleMode, vbTwips)获取打印机以Twips表示的尺寸If (ohgt / owid > phgt / pwid) Then    s = phgt

19、/ ohgtElse    s = pwid / owidEnd If      计算缩放因子pwid = obj.ScaleX(pwid, vbTwips, obj.ScaleMode) / sphgt = obj.ScaleY(phgt, vbTwips, obj.ScaleMode) / s             将打印机的尺寸转换成obj的坐标系统 / 缩放因子x_mid = obj.S

20、caleLeft + obj.ScaleWidth / 2y_mid = obj.ScaleTop + obj.ScaleHeight / 2设置打印区域的中心点坐标Printer.Scale (x_mid - pwid / 2, y_mid - phgt / 2)-(x_mid + pwid / 2, y_mid + phgt / 2)           设置打印机中新的ScaleWidth和ScaleHeightEnd Sub     坐标定位    窗体、图片框控件以及Printer对象提供的TextWidth和 TextHeight办法在文本定位的应用地方很有用。TextWidth、 TextHeight分别以对象当前

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论