• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    VB中實現“所見即所得”功能

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 37次 | 進入軟件測試論壇討論

    領測軟件測試網 作者: 王鋒

    來源:www.cci.net.com

    Windows程序大多數具有“所見即所得”(WYSIWYG,What You See Is What You Get)的功能!八娂此谩笔侵杠浖蛴≥敵鲂Ч推聊伙@示效果完全一致!八娂此谩笔荳indows程序的一個主要優點之一。

    本文將介紹如何使用Visual BASIC(以下簡稱VB)編寫具有“所見即所得”功能的Windows程序。

    一、方法概述
    為了在屏幕上模擬打印效果,我們使用VB的一個窗體來模擬一張打印紙。在VB中,每一個窗體都有一個PrintForm方法。使用PrintForm方法可以把一個窗體的內容完全一樣地通過打印機打印出來。由于PrintForm方法在打印窗體內容的時候,對于窗體內的文字和圖形都是同樣地打印。所以通過簡單的編程,使用PrintForm方法可以非常方便地實現圖文混合打印。

    ①確定用戶可以使用的顯示與打印雙功能字模

    “所見即所得”程序中用戶可以使用的字模必須是同時支持Windows的顯示設備和打印設備的雙功能字模。只有這些字模才可以在屏幕和打印機上產生一樣的效果。因此,程序必須首先獲得這些顯示與打印雙功能字模的名稱。

    ②在屏幕上設置“紙張”窗體的大小

    通過讀取Windows打印管理器紙張尺寸的設置,在VB里建立一個與打印紙具有同樣尺寸比例關系的窗體,作為屏幕上模擬打印效果的“紙張”,讓用戶在屏幕上就可以看到文字和圖形在打印紙上的位置分布。

    ③用戶在屏幕“紙張”上模擬打印效果

    在模擬打印的窗體中通過使用Print、Line、Circle等方法繪制文字和圖形的,還可以使用圖形框、Graph.VBX、OLE等控件繪制圖形、統計圖表、公式、藝術字型等。

    ④將屏幕“紙張”的內容輸出到打印機

    使用窗體的PrintForm方法把第③步所繪制的文字和圖形輸出到打印機,得到和屏幕顯示一模一樣的打印拷貝,實現“所見即所得”。

    二、打印機字模和顯示器字模的精確匹配
    Windows的字模分為兩類:打印機字模和顯示器字模。各種TrueType字模(如宋體、黑體字模)都是顯示與打印雙功能字模。其他的非TrueType字模就只能用于顯示或打印。

    如果在模擬打印窗體的文字輸出中使用了只能用于顯示的字模,那么當PrintForm方法執行的時候,Windows就只能在打印字模中查找一個盡量和這個顯示字模字型匹配的字模來進行打印。這樣將導致得到的打印拷貝與屏幕顯示不一致。

    為了使程序獲得“所見即所得”的能力,必須在窗體輸出中使用顯示與打印雙功能字模。因此,程序獲得“所見即所得”能力的一個關鍵是:確保在屏幕輸出中只使用顯示與打印雙功能字模。

    在VB中提供了兩個全局對象:屏幕對象Screen和打印機對象Printer。兩個對象都提供了FontCount屬性和Fonts屬性。FontCount屬性提供了可使用字模的數量,而Fonts屬性提供了可使用字模的名稱。在程序中,我們可以取出Screen對象和Printer對象所共同擁有的字模,這些字模就是所有的顯示與打印雙功能字模。

    具體的程序如下:

    首先設置一個列表框,取名List1,然后調用下面的GetFont函數,在List1中就存放所有顯示與打印雙功能字模的名稱。

    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.Add1tem (Sereen.Fonts(i))
         End If
      Next j
    Next i
    End Sub

    三、窗體大小和紙張尺寸的匹配
    為了在屏幕上可以清楚地看到文字和圖形在打印紙上的位置和大小關系,必須使VB顯示窗口的大小比例和打印紙張的大小比例是一致的。打印紙張的大小可以使用Printer對象的Width和Height屬性來獲得。根據獲得的屬性值可以設置VB顯示窗體的大小比例,使之合乎紙張的比例大小。

    下面的程序中有一個變量Size,其取值的范圍為0-1。它的作用是控制打印圖形的大小。當Size的值為1的時候,打印圖形將和Windows設定的紙張一樣大小。具體程序如下:

    Sub Form_Load ()
      Dim SizeAS INTECER
      Size=0.95
      Form1.Height=Printer.Height*Size
      Form1.Wdth=Printer.Width*Size
    End Sub

    四、模擬打印和打印輸出
    下面的一段程序演示了在顯示窗體上模擬打印文字和圖形的方法,以及使用PrintForm把顯示窗體中的文字和圖形輸出到打印機的方法。

    注意的是:為了使用PrintForm方法,必須把顯示窗體的AutoRedraw屬性設置為True。

    由于PrintForm方法打印窗體的內容是使用bit-by-bit的拷貝方法,因此在窗體里的所有文字和圖形都可以被原樣打印出來。作為例子,我們可以使用OLE控件來顯示Word公式編輯器里編輯的公式,使用Picture和Graph控件來顯示圖形和統計圖。然后使用PrintForm方法將它們打印出來。

    具體程序如下:

    Sub PrintOnScreen ()
    Form1.Scale(0,0)-(100,100) ' 設置坐標
    Form1.Line(100,0)-(0,100) ' 顯示畫線
    Form1.CurrentX=0
    Form1.CurrentY=0
    Form1.FontName="宋體" ' 輸出文字
    Form1.FontSize=20
    Form1.Print "模擬打印"
    Picture1.Picture=LoadPicture("setup.bmp") '輸出圖形
    Form1.PrintForm ' 將顯示窗體的內容送到打印機
    Printer.EndDoc ' 開始打印
    End Sub

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>