码迷,mamicode.com
首页 > Windows程序 > 详细

C# winfrom打印技术初探

时间:2015-11-21 13:03:46      阅读:339      评论:0      收藏:0      [点我收藏+]

标签:

最近用到了winform去打印,网上查了一些资料,大概内容:

一 、首先有几个类 PageSetupDialog 、 PrintDialog 、PrintDocument 、PrintPreviewControls\\PrintPreviewDialog。这几个类的功能做简要介绍

 
PageSetupDialog 这个是打印设置对话框。

PrintDialog 、打印对话框。
PrintDocument 、打印的具体内容在这个里面设置是打印资料的对象哦。需要在这个的PrintPage事件下面写绘图的的形状什么的用GDI做。

PrintPreviewDialog:打印预览对话框。

PrintPreviewControls\\这个是打印的一个预览控件我这里没有用到,应该是可以实时显示用的。

技术分享

二、具体的操作步骤

1、新建winform项目及创建窗体

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

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

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

5、示意代码如下

三、打印代码如下

public partial class Form3 : Form
{
    public Form3()
    {
        InitializeComponent();
        this.printDocument1.OriginAtMargins = true;//启用页边距
        this.pageSetupDialog1.EnableMetric = true; //以毫米为单位

    }

    //打印设置
    private void btnSetPrint_Click(object sender, EventArgs e)
    {
        this.pageSetupDialog1.ShowDialog(); 
    }

    //打印预览
    private void btnPrePrint_Click(object sender, EventArgs e)
    {
        this.printPreviewDialog1.ShowDialog(); 
    }

    //打印
    private void btnPrint_Click(object sender, EventArgs e)
    {
        if (this.printDialog1.ShowDialog() == DialogResult.OK)
        {
            this.printDocument1.Print();
        }
    }

    //打印内容的设置
    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {                        
        ////打印内容 为 整个Form
        //Image myFormImage;
        //myFormImage = new Bitmap(this.Width, this.Height);
        //Graphics g = Graphics.FromImage(myFormImage);
        //g.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, this.Size);
        //e.Graphics.DrawImage(myFormImage, 0, 0);

        ////打印内容 为 局部的 this.groupBox1
        //Bitmap _NewBitmap = new Bitmap(groupBox1.Width, groupBox1.Height);
        //groupBox1.DrawToBitmap(_NewBitmap, new Rectangle(0, 0, _NewBitmap.Width, _NewBitmap.Height));
        //e.Graphics.DrawImage(_NewBitmap, 0, 0, _NewBitmap.Width, _NewBitmap.Height); 

        //打印内容 为 自定义文本内容 
        Font font = new Font("宋体", 12);
        Brush bru = Brushes.Blue; 
        for (int i = 1; i <= 5; i++)
        {
            e.Graphics.DrawString("Hello world ", font, bru, i*20, i*20);
        }
    }

四、打印中遇到的问题

1、纸张大小一般是多大的,打印的时候打印内容和纸张怎么适应?怎么计算打印的页数,怎么计算需要打印多少页。

2、边距怎么设置。

3、怎么打印多页内容。

4、怎么用代码在页面的固定位置粘贴预定义好的图片。当图片和文字重合的时候怎么把文字显示到图片的上面。

5、打印按钮只能够触发一次打印事件,当多页打印的时候应该怎么触发呢?

6、想要打印表格的时候怎么弄?

C# winfrom打印技术初探

标签:

原文地址:http://www.cnblogs.com/ModBus/p/4983568.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!