热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

打印控件中的内容和打印窗体中的内容

效果示意:操作步骤:1、新建winform项目及创建窗体2、拖取打印相关控件PageSetupDialog、PrintDialog、PrintDocu

效果示意:


操作步骤:
1、新建winform项目及创建窗体

2、拖取 打印 相关控件
   PageSetupDialog 、 PrintDialog 、 PrintDocument 、PrintPreviewDialog

3、设置上述控件的Document属性为相应的PrintDocument

4、设置按钮等控件 及 添加相应按钮事件

5、示意代码如下


  1. 代码
  2. public partial class Form3 : Form
  3. {
  4. public Form3()
  5. {
  6. InitializeComponent();
  7. this.printDocument1.OriginAtMargins = true;//启用页边距
  8. this.pageSetupDialog1.EnableMetric = true; //以毫米为单位
  9. }
  10. //打印设置
  11. private void btnSetPrint_Click(object sender, EventArgs e)
  12. {
  13. this.pageSetupDialog1.ShowDialog();
  14. }
  15. //打印预览
  16. private void btnPrePrint_Click(object sender, EventArgs e)
  17. {
  18. this.printPreviewDialog1.ShowDialog();
  19. }
  20. //打印
  21. private void btnPrint_Click(object sender, EventArgs e)
  22. {
  23. if (this.printDialog1.ShowDialog() == DialogResult.OK)
  24. {
  25. this.printDocument1.Print();
  26. }
  27. }
  28. //打印内容的设置
  29. private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
  30. {
  31. ////打印内容 为 整个Form
  32. //Image myFormImage;
  33. //myFormImage = new Bitmap(this.Width, this.Height);
  34. //Graphics g = Graphics.FromImage(myFormImage);
  35. //g.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, this.Size);
  36. //e.Graphics.DrawImage(myFormImage, 0, 0);
  37. ////打印内容 为 局部的 this.groupBox1
  38. //Bitmap _NewBitmap = new Bitmap(groupBox1.Width, groupBox1.Height);
  39. //groupBox1.DrawToBitmap(_NewBitmap, new Rectangle(0, 0, _NewBitmap.Width, _NewBitmap.Height));
  40. //e.Graphics.DrawImage(_NewBitmap, 0, 0, _NewBitmap.Width, _NewBitmap.Height);
  41. //打印内容 为 自定义文本内容
  42. Font font = new Font("宋体", 12);
  43. Brush bru = Brushes.Blue;
  44. for (int i &#61; 1; i <&#61; 5; i&#43;&#43;)
  45. {
  46. e.Graphics.DrawString("Hello world ", font, bru, i*20, i*20);
  47. }
  48. }
  49. }




推荐阅读
  • PBO(PixelBufferObject),将像素数据存储在显存中。优点:1、快速的像素数据传递,它采用了一种叫DMA(DirectM ... [详细]
  • iOS snow animation
    CTSnowAnimationView.hCTMyCtripCreatedbyalexon1614.Copyright©2016年ctrip.Allrightsreserved.# ... [详细]
  • 本文介绍了如何利用 Delphi 中的 IdTCPServer 和 IdTCPClient 控件实现高效的文件传输。这些控件在默认情况下采用阻塞模式,并且服务器端已经集成了多线程处理,能够支持任意大小的文件传输,无需担心数据包大小的限制。与传统的 ClientSocket 相比,Indy 控件提供了更为简洁和可靠的解决方案,特别适用于开发高性能的网络文件传输应用程序。 ... [详细]
  • 普通树(每个节点可以有任意数量的子节点)级序遍历 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 本文介绍了在 Java 编程中遇到的一个常见错误:对象无法转换为 long 类型,并提供了详细的解决方案。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 本文深入探讨了Java多线程环境下的同步机制及其应用,重点介绍了`synchronized`关键字的使用方法和原理。`synchronized`关键字主要用于确保多个线程在访问共享资源时的互斥性和原子性。通过具体示例,如在一个类中使用`synchronized`修饰方法,展示了如何实现线程安全的代码块。此外,文章还讨论了`ReentrantLock`等其他同步工具的优缺点,并提供了实际应用场景中的最佳实践。 ... [详细]
  • 本文详细介绍了在CodeUp平台中实现大数进制转换的技术方法。具体而言,该问题要求将一个最多包含30位数字的十进制非负整数转换为二进制表示。输入数据包含多行,每行包含一个不超过30位的十进制非负整数。通过高效的算法设计,确保了大数转换的准确性和性能。 ... [详细]
  • 本文将介绍如何在混合开发(Hybrid)应用中实现Native与HTML5的交互,包括基本概念、学习目标以及具体的实现步骤。 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • 第十九天 - 类的约束、异常处理与日志记录
    本文介绍了如何通过类的约束来确保代码的一致性,以及如何使用异常处理和日志记录来提高代码的健壮性和可维护性。具体包括抛出异常、使用抽象类和方法,以及异常处理和日志记录的详细示例。 ... [详细]
  • Android 自定义 RecycleView 左滑上下分层示例代码
    为了满足项目需求,需要在多个场景中实现左滑删除功能,并且后续可能在列表项中增加其他功能。虽然网络上有很多左滑删除的示例,但大多数封装不够完善。因此,我们尝试自己封装一个更加灵活和通用的解决方案。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 在Delphi7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本。定义如下:1234 ... [详细]
author-avatar
aska
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有