2011-06-13 70 views
4

我通過使用vb.Net和標準.NET打印例程的Dymo打印機打印標籤,但我的應用必須支持任何類型的標籤打印機。由於dymo驅動程序在控制面板中沒有可訪問的頁邊距,並且控制面板對於大多數用戶來說都是受限制的,所以我正在使用應用程序設置頁邊距。使用.NET中的自定義頁邊距打印

我使用從應用程序中設置的值來替換PrintDocument中的邊距,這很好,但我也有一些代碼用於根據可打印區域的寬度計算文本大小和格式。我永遠無法獲得可打印區域來改變尺寸?所有的邊距設置都會根據頂部和左側邊距將整個圖形向下和向右分流,圖形對象中的可打印區域和VisibleClipBounds永不改變?發生這種情況時,文本會從頁面的右側和底部流出,因此它根本不會遵從右側和底部頁邊空白。

這是正常的行爲嗎?我是否必須在應用程序中進行更多處理才能根據我的頁邊空白和初始頁面大小自行計算可打印區域?

'Code to setup PrintDocument 
    MyDocument.DefaultPageSettings.Margins = New Margins(Printers.LabelPrinter.MarginLeft/0.254, Printers.LabelPrinter.MarginRight/0.254, Printers.LabelPrinter.MarginTop/0.254, Printers.LabelPrinter.MarginBottom/0.254) 
    MyDocument.OriginAtMargins = True 


'Code that runs during the MyDocument.Print event 
    width = e.Graphics.VisibleClipBounds.Width 
    height = e.Graphics.VisibleClipBounds.Height 
    'Calculate best fit text size here and update graphics object 

解決它。我的例程只是使用圖形對象,而不是Print事件的完整事件標記。

打印事件包含MarginBounds屬性,該屬性在應用邊距後返回大小的矩形,因此完美工作。

回答

1

解決了它。我的例程只是使用Graphics對象,而不是Print事件的完整eventargs。

打印事件包含MarginBounds屬性,該屬性在應用邊距後返回大小的矩形,因此完美工作。

(增加了這個答案,因爲當時沒有足夠的可信度來做這件事,希望這可以幫助那些看到這個問題的人沒有答案)。