打印多頁RichText
打印對象在處理RichTextBox時由於忽視了RichText代碼將不會工作得很好。為了打印RichTextBox,要使用SelPrint命令,但是SelPrint不是非常得友好,它按照自己的方式打印然後產生退紙動作。為了打印多頁RichText,要找到每一頁的開始和結束點,然後依此設置SelStart和SelLength,最後使用SelPrint打印出每一頁。以下是工作的每一個步驟:
1、使用SaveFile命令保存編輯版本的文件。
2、轉換編輯版本為打印版本:
遍歷這個文檔,修改SelIndent和SelRightIndent的數值,使之適合於打印機(注意:編輯時的縮進數值對於屏幕是合適的,但不適用於打印機)。
做些其他的修改,比如:添加頁眉,消除行號。
3、使用SelPrint循環一次打印一個頁面。這裡,計算行數是一個技巧,找到LFCRs是容易的,但是,也必須要計算一下行纏繞,它也算在了行統計中,以及絕對不允許發生的頁面溢出情況。
4、使用SelRTF=""刪除打印版本。
5、使用LoadFile重新啟動編輯版本。
打印MSFlexGrid
這裡有一個快速打印MSFlexGrid控件內容的方法:
Printer.PaintPictureMSFlexGrid_Name.Picture,0,0
Printer.EndDoc
如果想打印滿頁面的整個長度,請在前面添加下面2個語句:
Dimold_widthasInteger
MSFlexGrid_Name.width=printer.width
然後,再在尾部添加:
MSFlexGrid_Name.width=old_width
快速打印多個拷貝
當以TrueType字體打印一個文檔時,系統將下載打印機需要的字體,這樣做將花費很長的時間。你可以通過在一個打印機文檔中打印所有的拷貝實現快速打印多個拷貝內容:
Fori=1Tonum_copies
注釋:Printthedocumenthere...
Printer.NewPage
Nexti
Printer.EndDoc
打印灰色行和區域
黑白打印機不能打印灰色行,但是能通過發抖處理來創建灰色區域。為了創建圍繞一個區域的一個灰色邊界,使用DrawStyle=vbInvisible(5)來繪制一個窄灰色框,這樣就沒有了邊界。
設置打印的邊界
使用打印的scale熟悉來設置邊界。設置了這個屬性後,坐標(0,0)就映射到你需要加邊的地方。比如,下面的代碼設置左邊界為0.5英寸,上邊界為0.75英寸。然後再乘以1440轉換為twip。
Printer.ScaleLeft=-0.5*1440
Printer.ScaleTop=-0.75*1440
Printer.CurrentX=0
Printer.CurrentY=0
很遺憾,打印機不能精確地按照你所想的進行打印。試一試使用下面的命令在左上角打印一個1英寸大小的方塊:
Printer.Line(1440,1440)-Step(1440,1440)
看看偏離了多少。試一試多打印幾次,如果發現打印機有一定規律的偏離,你就可以按照一定的差額進行增減來達到最佳的效果。
提供打印預覽
建立打印程序時,先設置一個要繪制的對象做為參數,然後傳遞給程序一個打印的對象。
為了實現預覽效果,傳遞給程序一個隱藏PictureBox。然後,根據需要的比例,使用PaintPicture拷貝這個隱藏圖形到一個可見的PictureBox。在隱藏PictureBox上按照全尺寸繪制圖形,首先允許你按比例決定了字體,並且,也實現了不失真地完成其他圖形的描述。->