彩票走势图

LeadTools中文入门教程(3):打印图像(下)

转帖|使用教程|编辑:黄竹雯|2016-07-11 11:41:28.000|阅读 506 次

概述:本文承接上半部分教程:LeadTools中文入门教程(3):打印图像(上) ,继续讲述如何使用LeadTools创建一个具有“打印图像”功能的应用程序。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

本文承接上半部分教程:LeadTools中文入门教程(3):打印图像(上) ,继续讲述如何使用LeadTools创建一个具有“打印图像”功能的应用程序。

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)
 {
       //用户可能会使用快捷键,因此即使我们禁用了菜单项,也需要检查打印状态是否可用  
       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 状态
       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)
 {
       //转到图像的彩票走势图
       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)
 {
       // 重置页码为彩票走势图
       this._currentPrintPageNumber = 1;
 }
              
 private void _printDocument_PrintPage(object sender, PrintPageEventArgs e)
 {
       // 打印一页
              
       // 获取print document 对象
       PrintDocument document = sender as PrintDocument;
              
       // 创建一个新的LEADTOOLS image printer类
       RasterImagePrinter printer = new RasterImagePrinter();
              
        //设置 document 对象以便进行页面计算
       printer.PrintDocument = document;
              
       //检查我们是否想要使图像适应
       if(fitImageToPageToolStripMenuItem.Checked)
       {
             //若为Yes, 将图像调整到最大打印区域并居中
             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)
 {
       //此教程中此处不执行任何操作
 }

28. 编译并运行程序。结果如下图所示。

提醒:若您遇到"Invalid File Format" 或"Feature Not Supported"异常,请查阅参考文档.

leadtools
leadtools

DEMO下载:

文章转自:葡萄城控件产品博客,//blog.gcpowertools.com.cn

本文Demo提供了使用LeadTools打印图像的全部代码。为了运行Demo代码,请查看并免费下载LeadTools试用版

如需帮助,请联系!


标签:图像缩放图像处理图像打印

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关产品
LEADTOOLS Imaging Pro Developer Toolkit

20多年的老牌图像处理控件,支持TWAIN扫描、200多种图像效果、150多种图像格式…

LEADTOOLS Document Suite Developer Toolkit

LEADTOOLS Document Imaging Suite SDK是LEADTOOLS SDK中各种特点的精选组合,这套强大的工具利用了LEAD行业领先的图像处理技术来智能地识别文档的特征,而根据文档的特征可以识别扫描的或传真的任何类型的表格图像。

LEADTOOLS Document Imaging Developer Toolkit

多语言的文档图像处理控件,支持光符识别处理、条形码扫描识别等。

LEADTOOLS Medical Developer Toolkit

LEADTOOLS Medical Imaging是一款医疗成像控件,包含了一些精心挑选的、经过优化的特性,可以满足医疗成像应用程序开发的特殊需要。

LEADTOOLS Medical Imaging Suite Developer Toolkit

LEADTOOLS Medical Imaging Suite帮您开发功能强大的PACS和医学成像应用程序

扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP