轉(zhuǎn)帖|使用教程|編輯:黃竹雯|2016-07-11 11:41:28.000|閱讀 566 次
概述:本文承接上半部分教程:LeadTools中文入門(mén)教程(3):打印圖像(上) ,繼續(xù)講述如何使用LeadTools創(chuàng)建一個(gè)具有“打印圖像”功能的應(yīng)用程序。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
相關(guān)鏈接:
本文承接上半部分教程:LeadTools中文入門(mén)教程(3):打印圖像(上) ,繼續(xù)講述如何使用LeadTools創(chuàng)建一個(gè)具有“打印圖像”功能的應(yīng)用程序。
16. 添加以下代碼至printPreviewToolStripMenuItem菜單項(xiàng)的Click事件:
private void printPreviewToolStripMenuItem_Click(object sender, EventArgs e) { //設(shè)置打印文檔 SetupPrintDocument(); // 使用 .NET PrintPreviewDialog using(PrintPreviewDialog dlg = new PrintPreviewDialog()) { // 顯示對(duì)話(huà)框 dlg.Document = this._printDocument; dlg.WindowState = FormWindowState.Maximized; dlg.ShowDialog(this); } }
17. 將以下代碼添加到printSetupToolStripMenuItem菜單項(xiàng)的Click事件中:
private void printSetupToolStripMenuItem_Click(object sender, EventArgs e) { // 使用.NET PageSetupDialog using(PageSetupDialog dlg = new PageSetupDialog()) { dlg.Document = this._printDocument; dlg.ShowDialog(this); } }
18. 將以下代碼添加到printToolStripMenuItem菜單項(xiàng)的Click事件中:
private void printToolStripMenuItem_Click(object sender, EventArgs e) { //用戶(hù)可能會(huì)使用快捷鍵,因此即使我們禁用了菜單項(xiàng),也需要檢查打印狀態(tài)是否可用 if(rasterImageViewer1.Image == null) { return; } // 顯示打印預(yù)覽對(duì)話(huà)框,然后直接打印 // 設(shè)置打印文檔 SetupPrintDocument(); this._printDocument.Print(); }
19. 將以下代碼添加到exitToolStripMenuItem菜單項(xiàng)的Click事件中:
private void exitToolStripMenuItem_Click(object sender, EventArgs e) { // 關(guān)閉應(yīng)用程序 Close(); }
20. 將以下代碼添加到pageToolStripMenuItem菜單項(xiàng)的DropDownOpening事件中:
private void pageToolStripMenuItem_DropDownOpening(object sender, EventArgs e) { // 更新UI 狀態(tài) firstPageToolStripMenuItem.Enabled = (rasterImageViewer1.Image != null && rasterImageViewer1.Image.Page > 1); previousPageToolStripMenuItem.Enabled = firstPageToolStripMenuItem.Enabled; nextPageToolStripMenuItem.Enabled = (rasterImageViewer1.Image != null && rasterImageViewer1.Image.Page < rasterImageViewer1.Image.PageCount); lastPageToolStripMenuItem.Enabled = nextPageToolStripMenuItem.Enabled; }
21. 將以下代碼添加到firstPageToolStripMenuItem菜單項(xiàng)的Click事件中:
private void firstPageToolStripMenuItem_Click(object sender, EventArgs e) { //轉(zhuǎn)到圖像的金喜正規(guī)買(mǎi)球 rasterImageViewer1.Image.Page = 1; UpdateCaption(); }
22. 將以下代碼添加到previousPageToolStripMenuItem菜單項(xiàng)的Click事件中:
private void previousPageToolStripMenuItem_Click(object sender, EventArgs e) { // 轉(zhuǎn)到圖像的上一頁(yè) rasterImageViewer1.Image.Page--; UpdateCaption(); }
23. 將以下代碼添加到nextPageToolStripMenuItem菜單項(xiàng)的Click事件中:
private void nextPageToolStripMenuItem_Click(object sender, EventArgs e) { // 轉(zhuǎn)到圖像的下一頁(yè) rasterImageViewer1.Image.Page++; UpdateCaption(); }
24. 將以下代碼添加到lastPageToolStripMenuItem菜單項(xiàng)的Click事件中:
private void lastPageToolStripMenuItem_Click(object sender, EventArgs e) { // 轉(zhuǎn)到圖像的尾頁(yè) rasterImageViewer1.Image.Page = rasterImageViewer1.Image.PageCount; UpdateCaption(); }
25. 將以下代碼添加到usePageMarginsToolStripMenuItem菜單項(xiàng)的Click事件中:
private void usePageMarginsToolStripMenuItem_Click(object sender, EventArgs e) { // 切換選項(xiàng) usePageMarginsToolStripMenuItem.Checked = !usePageMarginsToolStripMenuItem.Checked; }
26. 將以下代碼添加到fitImageToPageToolStripMenuItem菜單項(xiàng)的Click事件中:
private void fitImageToPageToolStripMenuItem_Click(object sender, EventArgs e) { // 切換選項(xiàng) fitImageToPageToolStripMenuItem.Checked = !fitImageToPageToolStripMenuItem.Checked; }
27. 將以下代碼添加到Form1:
private void UpdateCaption() { //更新演示的標(biāo)題,顯示加載的圖像文件名字和當(dāng)前頁(yè)碼 if(rasterImageViewer1.Image != null) { Text = string.Format( "{0} - 第 {1} 頁(yè) (共 {2} 頁(yè)) - 打印圖像演示", this._currentImageFileName, rasterImageViewer1.Image.Page, rasterImageViewer1.Image.PageCount); } else { Text = "打印圖像演示"; } } private void SetupPrintDocument() { //在打印預(yù)覽前或打印前調(diào)用,用于設(shè)置文檔 //最小值/最大值 為圖像的頁(yè)面數(shù) this._printDocument.PrinterSettings.MinimumPage = 1; this._printDocument.PrinterSettings.MaximumPage = rasterImageViewer1.Image.PageCount; //默認(rèn)打印所有頁(yè)面 this._printDocument.PrinterSettings.FromPage = this._printDocument.PrinterSettings.MinimumPage; this._printDocument.PrinterSettings.ToPage = this._printDocument.PrinterSettings.MaximumPage; //設(shè)置文檔名字 this._printDocument.DocumentName = this._currentImageFileName; } private void _printDocument_BeginPrint(object sender, PrintEventArgs e) { // 重置頁(yè)碼為金喜正規(guī)買(mǎi)球 this._currentPrintPageNumber = 1; } private void _printDocument_PrintPage(object sender, PrintPageEventArgs e) { // 打印一頁(yè) // 獲取print document 對(duì)象 PrintDocument document = sender as PrintDocument; // 創(chuàng)建一個(gè)新的LEADTOOLS image printer類(lèi) RasterImagePrinter printer = new RasterImagePrinter(); //設(shè)置 document 對(duì)象以便進(jìn)行頁(yè)面計(jì)算 printer.PrintDocument = document; //檢查我們是否想要使圖像適應(yīng) if(fitImageToPageToolStripMenuItem.Checked) { //若為Yes, 將圖像調(diào)整到最大打印區(qū)域并居中 printer.SizeMode = RasterPaintSizeMode.FitAlways; printer.HorizontalAlignMode = RasterPaintAlignMode.Center; printer.VerticalAlignMode = RasterPaintAlignMode.Center; } else { //若為No, 正常打印 (原始大小) printer.SizeMode = RasterPaintSizeMode.Normal; printer.HorizontalAlignMode = RasterPaintAlignMode.Near; printer.VerticalAlignMode = RasterPaintAlignMode.Near; } // 考慮具有不同水平和垂直分辨率的傳真圖像 printer.UseDpi = true; // 打印整個(gè)圖像 printer.ImageRectangle = Rectangle.Empty; //使用最大頁(yè)面維度,這和使用Windows照片庫(kù)打印等效 printer.PageRectangle = RectangleF.Empty; //無(wú)論我們是否要忽略頁(yè)邊距,都會(huì)通知打印機(jī) printer.UseMargins = usePageMarginsToolStripMenuItem.Checked; // 打印當(dāng)前頁(yè) printer.Print(rasterImageViewer1.Image, this._currentPrintPageNumber, e); // 轉(zhuǎn)到下一頁(yè) this._currentPrintPageNumber++; //無(wú)論我們是否要打印更多的頁(yè)面,都通知打印機(jī) if(this._currentPrintPageNumber <= document.PrinterSettings.ToPage) { e.HasMorePages = true; } else { e.HasMorePages = false; } } private void _printDocument_EndPrint(object sender, PrintEventArgs e) { //此教程中此處不執(zhí)行任何操作 }
28. 編譯并運(yùn)行程序。結(jié)果如下圖所示。
提醒:若您遇到"Invalid File Format" 或"Feature Not Supported"異常,請(qǐng)查閱參考文檔.
DEMO下載:
文章轉(zhuǎn)自:葡萄城控件產(chǎn)品博客,//blog.gcpowertools.com.cn
本文Demo提供了使用LeadTools打印圖像的全部代碼。為了運(yùn)行Demo代碼,請(qǐng)查看并免費(fèi)下載LeadTools試用版!
如需幫助,請(qǐng)聯(lián)系!
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn