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