檢視原始碼 wxPrintout (wx v2.4.3)

這個類別封裝了列印應用程式文件的功能。

必須衍生一個新的類別並覆寫成員,以回應諸如 OnPrintPage() (在 wx 中未實作) 和 HasPage() (在 wx 中未實作) 的呼叫,並將列印影像渲染到相關聯的 wxDC。這個類別的實例會傳遞給 wxPrinter:print/4wxPrintPreview 物件,以啟動列印或預覽。

您衍生的 wxPrintout 負責繪製預覽影像和列印頁面。如果您的視窗繪圖常式接受任意 DC 作為參數,您可以在您的 wxPrintout 子類別中重複使用這些常式來繪製列印影像。您也可以在您的 wxPrintout 子類別中新增額外的繪圖元素,例如頁首、頁尾和/或頁碼。但是,列印頁面上的影像通常會與螢幕上繪製的影像不同,預覽影像也會不同 - 不僅僅是在頁首和頁尾的存在方面,通常在比例上也會不同。高解析度印表機呈現更大的繪圖表面(即,更高解析度的 DC);縮小的預覽影像呈現更小的繪圖表面(較低解析度的 DC)。透過在您的 wxPrintout 子類別中使用常式 FitThisSizeToXXX() 和/或 MapScreenSizeToXXX() 來設定相關聯 DC 的使用者比例和原點,您可以輕鬆地使用單一繪圖常式在您的應用程式視窗上繪圖,以建立列印預覽影像,並建立列印紙張影像,並使預覽影像和列印頁面具有共同的外觀。

請參閱

wxWidgets 文件: wxPrintout

摘要

函式

銷毀物件

設定與此 wxPrintout 關聯的 wxDC 的使用者比例和裝置原點,以便給定的影像大小完全符合頁面矩形內,且原點位於頁面矩形的左上角。

設定與此 wxPrintout 關聯的 wxDC 的使用者比例和裝置原點,以便給定的影像大小完全符合給定 wxPageSetupDialogData 物件中設定的頁面邊界內。

設定與此 wxPrintout 關聯的 wxDC 的使用者比例和裝置原點,以便給定的影像大小完全符合紙張內,且原點位於紙張的左上角。

傳回與列印相關聯的裝置內容 (在列印或預覽開始時提供給列印)。

傳回對應於給定 wxPageSetupDialogData 物件所指定頁面邊界的矩形,以關聯的 wxDC 的邏輯座標表示,用於目前的使用者比例和裝置原點。

傳回對應於頁面的矩形,以關聯的 wxDC 的邏輯座標表示,用於目前的使用者比例和裝置原點。

傳回對應於紙張的矩形,以關聯的 wxDC 的邏輯座標表示,用於目前的使用者比例和裝置原點。

以公釐為單位傳回印表機頁面的大小。

以像素為單位傳回印表機頁面的大小,稱為頁面矩形。

傳回對應於整個紙張的矩形(以像素為單位),稱為紙張矩形。

傳回印表機裝置內容的每邏輯英吋像素數。

傳回螢幕裝置內容的每邏輯英吋像素數。

傳回列印的標題。

如果列印目前用於預覽,則傳回 true。

設定與此 wxPrintout 關聯的 wxDC 的使用者比例和裝置原點,以便一個螢幕像素對應到 DC 上的一個裝置像素。

這會將與此 wxPrintout 關聯的 wxDC 的使用者比例設定為與 mapScreenSizeToPaper/1 相同的比例,但將邏輯原點設定為頁面矩形的左上角。

這會將與此 wxPrintout 關聯的 wxDC 的使用者比例設定為與 mapScreenSizeToPageMargins/2 相同的比例,但將邏輯原點設定為給定 wxPageSetupDialogData 物件所指定的頁面邊界的左上角。

設定與此 wxPrintout 關聯的 wxDC 的使用者比例和裝置原點,以便列印頁面盡可能符合螢幕大小,且邏輯原點位於紙張矩形的左上角。

將裝置原點移動以邏輯座標指定的量。

設定相關聯 wxDC 的裝置原點,以便目前的邏輯點成為新的邏輯原點。

類型

-type wxPrintout() :: wx:wx_object().

函式

-spec destroy(This :: wxPrintout()) -> ok.

銷毀物件

連結到此函式

fitThisSizeToPage(This, ImageSize)

檢視原始碼
-spec fitThisSizeToPage(This, ImageSize) -> ok
                           when This :: wxPrintout(), ImageSize :: {W :: integer(), H :: integer()}.

設定與此 wxPrintout 關聯的 wxDC 的使用者比例和裝置原點,以便給定的影像大小完全符合頁面矩形內,且原點位於頁面矩形的左上角。

在 MSW 和 Mac 上,頁面矩形是頁面的可列印區域。在其他平台上和 PostScript 列印中,頁面矩形是整個紙張。

如果您希望列印影像盡可能大,請使用此方法,但請注意,在某些平台上,影像的部分可能會在邊緣被切斷。

連結到此函式

fitThisSizeToPageMargins(This, ImageSize, PageSetupData)

檢視原始碼
-spec fitThisSizeToPageMargins(This, ImageSize, PageSetupData) -> ok
                                  when
                                      This :: wxPrintout(),
                                      ImageSize :: {W :: integer(), H :: integer()},
                                      PageSetupData :: wxPageSetupDialogData:wxPageSetupDialogData().

設定與此 wxPrintout 關聯的 wxDC 的使用者比例和裝置原點,以便給定的影像大小完全符合給定 wxPageSetupDialogData 物件中設定的頁面邊界內。

此函式在所有平台上提供最大的一致性,因為它不依賴於存取紙張的可列印區域。

注意:在 Mac 上,原生 wxPageSetupDialog 不允許您設定頁面邊界;您必須提供自己的機制,或者可以使用僅限 Mac 的類別 wxMacPageMarginsDialog。

連結到此函式

fitThisSizeToPaper(This, ImageSize)

檢視原始碼
-spec fitThisSizeToPaper(This, ImageSize) -> ok
                            when This :: wxPrintout(), ImageSize :: {W :: integer(), H :: integer()}.

設定與此 wxPrintout 關聯的 wxDC 的使用者比例和裝置原點,以便給定的影像大小完全符合紙張內,且原點位於紙張的左上角。

如果您要管理自己的頁面邊界,請使用此方法。

注意:大多數印表機在紙張邊緣周圍的區域都無法列印,因此影像邊緣可能會被切斷。

-spec getDC(This) -> wxDC:wxDC() when This :: wxPrintout().

傳回與列印相關聯的裝置內容 (在列印或預覽開始時提供給列印)。

應用程式可以使用 getDC/1 來取得裝置內容以便繪製。

如果在 Windows 或 Mac 下列印,這將是 wxPrinterDC (在 wx 中未實作),如果在其他平台上列印,則為 wxPostScriptDC,如果正在預覽,則為 wxMemoryDC

連結到此函式

getLogicalPageMarginsRect(This, PageSetupData)

檢視原始碼
-spec getLogicalPageMarginsRect(This, PageSetupData) ->
                                   {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}
                                   when
                                       This :: wxPrintout(),
                                       PageSetupData :: wxPageSetupDialogData:wxPageSetupDialogData().

傳回對應於給定 wxPageSetupDialogData 物件所指定頁面邊界的矩形,以關聯的 wxDC 的邏輯座標表示,用於目前的使用者比例和裝置原點。

在所有平台上,頁面邊界都是相對於紙張邊緣指定的。

連結到此函式

getLogicalPageRect(This)

檢視原始碼
-spec getLogicalPageRect(This) -> {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}
                            when This :: wxPrintout().

傳回對應於頁面的矩形,以關聯的 wxDC 的邏輯座標表示,用於目前的使用者比例和裝置原點。

在 MSW 和 Mac 上,這將是紙張的可列印區域。在其他平台和 PostScript 列印上,這將是完整的紙張矩形。

連結到此函式

getLogicalPaperRect(This)

檢視原始碼
-spec getLogicalPaperRect(This) -> {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}
                             when This :: wxPrintout().

傳回對應於紙張的矩形,以關聯的 wxDC 的邏輯座標表示,用於目前的使用者比例和裝置原點。

-spec getPageSizeMM(This) -> {W :: integer(), H :: integer()} when This :: wxPrintout().

以公釐為單位傳回印表機頁面的大小。

連結到此函式

getPageSizePixels(This)

檢視原始碼
-spec getPageSizePixels(This) -> {W :: integer(), H :: integer()} when This :: wxPrintout().

以像素為單位傳回印表機頁面的大小,稱為頁面矩形。

頁面矩形的左上角位於 (0,0),右下角位於 (w,h)。這些值可能與 wxDC:getSize/1 傳回的值不同;如果列印用於預覽,則會使用記憶體裝置內容,該內容使用反映目前預覽縮放的點陣圖大小。如果需要支援預覽,應用程式必須考慮這種差異。

連結到此函式

getPaperRectPixels(This)

檢視原始碼
-spec getPaperRectPixels(This) -> {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}
                            when This :: wxPrintout().

傳回對應於整個紙張的矩形(以像素為單位),稱為紙張矩形。

紙張矩形和頁面矩形之間的這種區別反映了大多數印表機無法一直列印到紙張邊緣的事實。頁面矩形是一個左上角位於 (0,0) 且寬度和高度由 wxDC::GetPageSizePixels() 給定的矩形。

在 MSW 和 Mac 上,頁面矩形給出紙張的可列印區域,而紙張矩形代表整個紙張,包括不可列印的邊框。因此,wxDC::GetPaperRectPixels() 傳回的矩形的左上角座標為小的負數,右下角的值將略大於 wxDC::GetPageSizePixels() 給定的寬度和高度。

在其他平台上和 PostScript 列印中,紙張會被視為整個區域都是可列印的,因此此函式將傳回與頁面矩形相同的矩形。

-spec getPPIPrinter(This) -> {W :: integer(), H :: integer()} when This :: wxPrintout().

傳回印表機裝置內容的每邏輯英吋像素數。

將印表機 PPI 除以螢幕 PPI 可以為在印表機上繪製文字提供合適的縮放比例。

請記住將此值乘以縮放比例,以考慮預覽 DC 的大小。或者,您可以使用下面的 FitThisSizeToXXX() 和 MapScreenSizeToXXX 常式,它們會為您執行大部分的縮放計算。

-spec getPPIScreen(This) -> {W :: integer(), H :: integer()} when This :: wxPrintout().

傳回螢幕裝置內容的每邏輯英吋像素數。

將印表機 PPI 除以螢幕 PPI 可以為在印表機上繪製文字提供合適的縮放比例。

如果您要自行縮放,請記住將此值乘以縮放比例,以考慮預覽 DC 的大小。

-spec getTitle(This) -> unicode:charlist() when This :: wxPrintout().

傳回列印的標題。

-spec isPreview(This) -> boolean() when This :: wxPrintout().

如果列印目前用於預覽,則傳回 true。

連結到此函式

mapScreenSizeToDevice(This)

檢視原始碼
-spec mapScreenSizeToDevice(This) -> ok when This :: wxPrintout().

設定與此 wxPrintout 關聯的 wxDC 的使用者比例和裝置原點,以便一個螢幕像素對應到 DC 上的一個裝置像素。

也就是說,使用者比例設定為 (1,1),裝置原點設定為 (0,0)。

如果您想在呼叫 wxDC 繪圖呼叫之前自行進行縮放,例如,如果您的底層模型是浮點數,並且您想在高解析度印表機上實現最大的繪圖精度,請使用此功能。

您可以使用下面的 GetLogicalXXXRect() 常式來取得紙張矩形、頁面矩形或頁面邊距矩形,以執行您自己的縮放。

注意:雖然 macOS 的底層繪圖模型是浮點數,但 wxWidgets 的繪圖模型是從整數座標縮放。

連結到此函式

mapScreenSizeToPage(This)

檢視原始碼
-spec mapScreenSizeToPage(This) -> ok when This :: wxPrintout().

這會將與此 wxPrintout 關聯的 wxDC 的使用者比例設定為與 mapScreenSizeToPaper/1 相同的比例,但將邏輯原點設定為頁面矩形的左上角。

連結到此函式

mapScreenSizeToPageMargins(This, PageSetupData)

檢視原始碼
-spec mapScreenSizeToPageMargins(This, PageSetupData) -> ok
                                    when
                                        This :: wxPrintout(),
                                        PageSetupData :: wxPageSetupDialogData:wxPageSetupDialogData().

這會將與此 wxPrintout 關聯的 wxDC 的使用者比例設定為與 mapScreenSizeToPageMargins/2 相同的比例,但將邏輯原點設定為給定 wxPageSetupDialogData 物件所指定的頁面邊界的左上角。

連結到此函式

mapScreenSizeToPaper(This)

檢視原始碼
-spec mapScreenSizeToPaper(This) -> ok when This :: wxPrintout().

設定與此 wxPrintout 關聯的 wxDC 的使用者比例和裝置原點,以便列印頁面盡可能符合螢幕大小,且邏輯原點位於紙張矩形的左上角。

也就是說,螢幕上 100 像素的物件在列印頁面上應該顯示相同的大小。(當然,在預覽影像中,根據縮放比例,它會較大或較小。)

如果您想要所見即所得 (WYSIWYG) 的行為,例如在文字編輯器中,請使用此功能。

連結到此函式

new(Title, OnPrintPage)

檢視原始碼
-spec new(Title :: string(), OnPrintPage :: function()) -> wxPrintout:wxPrintout().

等同於 new/3

連結到此函式

new(Title, OnPrintPage, Opts)

檢視原始碼
-spec new(Title :: string(), OnPrintPage, [Option]) -> wxPrintout:wxPrintout()
             when
                 OnPrintPage :: fun((wxPrintout(), Page :: integer()) -> boolean()),
                 Option ::
                     {onPreparePrinting, fun((wxPrintout()) -> ok)} |
                     {onBeginPrinting, fun((wxPrintout()) -> ok)} |
                     {onEndPrinting, fun((wxPrintout()) -> ok)} |
                     {onBeginDocument,
                      fun((wxPrintout(), StartPage :: integer(), EndPage :: integer()) -> boolean())} |
                     {onEndDocument, fun((wxPrintout()) -> ok)} |
                     {hasPage, fun((wxPrintout(), Page :: integer()) -> ok)} |
                     {getPageInfo,
                      fun((wxPrintout()) ->
                              {MinPage :: integer(),
                               MaxPage :: integer(),
                               PageFrom :: integer(),
                               PageTo :: integer()})}.

建構函式。

建立一個具有回呼函式,以及可選擇性地具有其他回呼函式的 wxPrintout 物件。This 參數是此物件的 wxPrintout 物件參考。

注意:回呼函式可能不會呼叫其他程序。

連結到此函式

offsetLogicalOrigin(This, Xoff, Yoff)

檢視原始碼
-spec offsetLogicalOrigin(This, Xoff, Yoff) -> ok
                             when This :: wxPrintout(), Xoff :: integer(), Yoff :: integer().

將裝置原點移動以邏輯座標指定的量。

連結到此函式

setLogicalOrigin(This, X, Y)

檢視原始碼
-spec setLogicalOrigin(This, X, Y) -> ok when This :: wxPrintout(), X :: integer(), Y :: integer().

設定相關聯 wxDC 的裝置原點,以便目前的邏輯點成為新的邏輯原點。