打印Winfrom控件实现简陋版的打印(C#)

本文在前面写的博文基础上进行修改:利用Graphics的CopyFromScreen实现简陋版的打印(C#)_zxy2847225301的博客-CSDN博客

通过截图的方式进行打印在前面的文章后面已经介绍过,有问题。

UI布局如下:

代码如下:

cs 复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace winformDemo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.printDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.printDocument1_PrintPage);
            this.button1.Click += new System.EventHandler(this.button1_Click);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            printPreviewDialog1.Document = printDocument1;
            printPreviewDialog1.ShowDialog();
        }

        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            PrintToGraphics(e.Graphics, e.MarginBounds);
        }
        public void PrintToGraphics(Graphics graphics, Rectangle bounds)
        {
            Bitmap bitmap = new Bitmap(this.Width, this.Height);
            this.DrawToBitmap(bitmap, new Rectangle(0, 0, bitmap.Width, bitmap.Height));
            Rectangle target = new Rectangle(0, 0, bitmap.Width, bitmap.Height);
            graphics.PageUnit = GraphicsUnit.Display;
            graphics.DrawImage(bitmap, target);
           
        }
    }
}

运行结果如下:

把Form1窗体往任务栏方向挪动,不会出现前面博文中说的那个问题,如下图:

好了,本水文到此结束。后面还有继续深入研究的,如打印单个控件TextBox,Button,还有实现分页打印等

相关推荐
码农君莫笑21 分钟前
Blazor开发复杂信息管理系统的优势
c#·blazor·信息管理系统·业务系统
pchmi33 分钟前
C# OpenCV机器视觉:转速测量
c#·机器视觉·opencvsharp·转速测量
网络安全那些事1 小时前
C#版 软件开发6大原则与23种设计模式
设计模式·c#·6大原则
199909232 小时前
C#+Winform+SQLServer+图书管理系统
sqlserver·c#·winform
步、步、为营2 小时前
C#对象池
开发语言·c#
Nita.4 小时前
C#基础 枚举 Enumeration从基础到进阶
c#·.net·枚举
忧郁的蛋~5 小时前
ASP.NET Core的部署、维护、日志记录和错误处理
c#·asp.net·.netcore
Thomas_YXQ6 小时前
Unity3D中的Lua、ILRuntime与HybridCLR/huatuo热更对比分析详解
开发语言·junit·性能优化·c#·游戏引擎·lua·unity3d
码上农民8 小时前
使用C# CEFSharp在WPF中开发桌面程序实现同一网站多开功能
开发语言·c#
wgscd10 小时前
C# 文件分割和文件合并
c#·文件分割·文件合并