使用VB实现所见即所得功能
一.方法概述
为了模拟屏幕上的打印效果,我们用VB的一种形式来模拟一张打印纸。在VB中,每个窗体都有一个PrintForm方法。使用PrintForm方法,打印机可以打印出完全相同的表单内容。因为PrintForm方法打印表单的内容,所以表单中的文本和图形以相同的方式打印。因此,通过简单的编程,使用PrintForm方法实现图文混合打印是非常方便的。
具体方法是:
①确定用户可以使用的显示和打印双功能字体。
用户在所见即所得程序中可以使用的字体必须是同时支持Windows的显示设备和打印设备的双功能字体。只有这些字体才能在屏幕和打印机上产生相同的效果。因此,程序必须首先获取这些显示和打印双功能字体的名称。
②设置屏幕上“纸张”表格的尺寸。
通过读取Windows打印管理器的纸张大小设置,在VB中建立一个与打印纸大小比例相同的表单,作为“纸张”在屏幕上模拟打印效果,让用户在屏幕上看到打印纸上字符和图形的位置分布。
③用户在屏幕“纸张”上模拟打印效果
在模拟打印的窗体中,可以使用Print、Line、Circle等方法绘制文本和图形。,而且还可以画图形、统计图、公式、艺术字体等。通过使用图形框,图形。VBX,奥莱和其他控制。
④将屏幕“纸张”的内容输出到打印机。
利用表单的PrintForm方法将步骤③中绘制的文字和图形输出到打印机,得到与屏幕显示相同的打印副本,实现“所见即所得”。
第二,打印机字体和显示器字体的精确匹配
Windows字体分为两类:打印机字体和显示字体。各种TrueType字体(如微软雅黑、黑体)都是显示和打印的双功能字体。其他非TrueType字体只能用于显示或打印。
如果在模拟打印表单的文本输出中使用了只能用于显示的字体,那么在执行PrintForm方法时,Windows只能在打印字体中找到与该显示字体尽可能匹配的字体进行打印。这将使打印副本与屏幕显示保持一致。
为了使程序具有“所见即所得”的能力,需要在表单输出中使用显示和打印的双功能字体。因此,程序能够做到“所见即所得”的关键之一就是保证屏幕输出只使用显示和打印字体。
VB中提供了两个全局对象:屏幕对象和打印机对象。这两个对象都提供了FontCount属性和Fonts属性。FontCount属性提供可用字体的数量,而Fonts属性提供可用字体的名称。在程序中我们可以拿出屏幕对象和打印机对象共享的字体,都是具有显示和打印双重功能的字体。具体程序如下:
首先设置一个列表框,命名为List1,然后调用下面的GetFont函数,将所有具有显示和打印双重功能的字体的名称存储在List1中。
Sub GetFont()
For i = 0到Screen。对于j = 0,FontCount - 1
到打印机。FontCount - 1
If屏幕。字体(i) =打印机。字体(j)然后
列表1。AddItem(屏幕。字体(I))
End If
Next j
Next I
End Sub
0条评论