使用VB實現(xiàn)所見即所得功能

字號:

一、方法概述
    為了在屏幕上模擬打印效果,我們使用VB的一個窗體來模擬一張打印紙。在VB中,每一個窗體都有一個PrintForm方法。使用PrintForm方法可以把一個窗體的內(nèi)容完全一樣地通過打印機(jī)打印出來。由于PrintForm方法在打印窗體內(nèi)容的時候,對于窗體內(nèi)的文字和圖形都是同樣地打印。所以通過簡單的編程,使用PrintForm方法可以非常方便地實現(xiàn)圖文混合打印。
    具體的方法是:  
    ①、確定用戶可以使用的顯示與打印雙功能字模
    “所見即所得”程序中用戶可以使用的字模必須是同時支持Windows的顯示設(shè)備和打印設(shè)備的雙功能字模。只有這些字模才可以在屏幕和打印機(jī)上產(chǎn)生一樣的效果。因此,程序必須首先獲得這些顯示與打印雙功能字模的名稱?! ?BR>    ②、在屏幕上設(shè)置“紙張”窗體的大小
    通過讀取Windows打印管理器紙張尺寸的設(shè)置,在VB里建立一個與打印紙具有同樣尺寸比例關(guān)系的窗體,作為屏幕上模擬打印效果的“紙張”,讓用戶在屏幕上就可以看到文字和圖形在打印紙上的位置分布?! ?BR>    ③、用戶在屏幕“紙張”上模擬打印效果
    在模擬打印的窗體中通過使用Print、Line、Circle等方法繪制文字和圖形的,還可以使用圖形框、Graph.VBX、OLE等控件繪制圖形、統(tǒng)計圖表、公式、藝術(shù)字型等等?! ?BR>    ④、將屏幕“紙張”的內(nèi)容輸出到打印機(jī)
    使用窗體的PrintForm方法把第③步所繪制的文字和圖形輸出到打印機(jī),得到和屏幕顯示一模一樣的打印拷貝,實現(xiàn)“所見即所得”?! ?BR>    二、打印機(jī)字模和顯示器字模的精確匹配
    Windows的字模分為兩類:打印機(jī)字模和顯示器字模。各種TrueType字模(如微軟雅黑、黑體字模)都是顯示與打印雙功能字模。其他的非TrueType字模就只能用于顯示或打印。
    如果在模擬打印窗體的文字輸出中使用了只能用于顯示的字模,那么當(dāng)PrintForm方法執(zhí)行的時候,Windows就只能在打印字模中查找一個盡量和這個顯示字模字型匹配的字模來進(jìn)行打印。這樣將導(dǎo)致得到的打印拷貝與屏幕顯示一致。
    為了使程序獲得“所見即所得”的能力,必須在窗體輸出中使用顯示與打印雙功能字模。因此,程序獲得“所見即所得”能力的一個關(guān)鍵是:確保在屏幕輸出中只使用顯示與打印雙功能字模。
    在VB中提供了兩個全局對象:屏幕對象Screen和打印機(jī)對象Printer。兩個對象都提供了FontCount屬性和Fonts屬性。FontCount屬性提供了可使用字模的數(shù)量,而Fonts屬性提供了可使用字模的名稱。在程序中,我們可以取出Screen對象和Printer對象所共同擁有的字模,這些字模就是所有的顯示與打印雙功能字模。具體的程序如下:
    首先設(shè)置一個列表框,取名List1,然后調(diào)用下面的GetFont函數(shù),在List1中就存放所有顯示與打印雙功能字模的名稱?! ?BR>    Sub GetFont()
     For i = 0 To Screen.FontCount - 1
     For j = 0 To Printer.FontCount - 1
     If Screen.Fonts(i) = Printer.Fonts(j) Then
     List1.AddItem (Screen.Fonts(i))
     End If
     Next j
     Next i
     End Sub