`
cuijiemin
  • 浏览: 265417 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)

阅读更多
在C#中使用PrintDialog可以很方便的实现程序的打印功能。

其步骤如下:

创建一个PrintDialog的实例。如下:
System.Windows.Forms.PrintDialog PrintDialog1=new PrintDialog ();
创建一个PrintDocument的实例.如下:
System.Drawing.Printing.PrintDocument docToPrint =
new System.Drawing.Printing.PrintDocument();
设置打印机开始打印的事件处理函数.函数原形如下:
void docToPrint_PrintPage(object sender,
System.Drawing.Printing.PrintPageEventArgs e)
将事件处理函数添加到PrintDocument的PrintPage事件中。
docToPrint.PrintPage+=new PrintPageEventHandler(docToPrint_PrintPage);
设置PrintDocument的相关属性,如:
PrintDialog1.AllowSomePages = true;PrintDialog1.ShowHelp = true;
把PrintDialog的Document属性设为上面配置好的PrintDocument的实例:
PrintDialog1.Document = docToPrint;
调用PrintDialog的ShowDialog函数显示打印对话框:
DialogResult result = PrintDialog1.ShowDialog();
根据用户的选择,开始打印:
if (result==DialogResult.OK)
{
docToPrint.Print();
}

例子如下:

使用时先创建PrintService类的实例,然后调用void StartPrint(Stream streamToPrint,string streamType)函数开始打印。其中streamToPrint是要打印的内容(字节流),streamType是流的类型(txt表示普通文本,image表示图像);




--------------------------------------------------------------------------------



using System;
using System.Drawing.Printing;
using System.Windows.Forms;
using System.IO;

namespace EDImageSystem
{
/// <summary>
/// PrintService 的摘要说明。
/// </summary>
public class PrintService
{
public PrintService()
{
//
// TODO: 在此处添加构造函数逻辑
//
this.docToPrint.PrintPage+=new PrintPageEventHandler(docToPrint_PrintPage);
}//将事件处理函数添加到PrintDocument的PrintPage中

// Declare the PrintDocument object.
private System.Drawing.Printing.PrintDocument docToPrint =
new System.Drawing.Printing.PrintDocument();//创建一个PrintDocument的实例

private System.IO.Stream streamToPrint;
string streamType;

// This method will set properties on the PrintDialog object and
// then display the dialog.
public void StartPrint(Stream streamToPrint,string streamType)
{

this.streamToPrint=streamToPrint;
this.streamType=streamType;
// Allow the user to choose the page range he or she would
// like to print.
System.Windows.Forms.PrintDialog PrintDialog1=new PrintDialog ();//创建一个PrintDialog的实例。
PrintDialog1.AllowSomePages = true;

// Show the help button.
PrintDialog1.ShowHelp = true;

// Set the Document property to the PrintDocument for
// which the PrintPage Event has been handled. To display the
// dialog, either this property or the PrinterSettings property
// must be set
PrintDialog1.Document = docToPrint;//把PrintDialog的Document属性设为上面配置好的PrintDocument的实例

DialogResult result = PrintDialog1.ShowDialog();//调用PrintDialog的ShowDialog函数显示打印对话框

// If the result is OK then print the document.
if (result==DialogResult.OK)
{
docToPrint.Print();//开始打印
}

}

// The PrintDialog will print the document
// by handling the document’s PrintPage event.
private void docToPrint_PrintPage(object sender,
System.Drawing.Printing.PrintPageEventArgs e)//设置打印机开始打印的事件处理函数
{

// Insert code to render the page here.
// This code will be called when the control is drawn.

// The following code will render a simple
// message on the printed document
switch(this.streamType)
{
case "txt":
string text = null;
System.Drawing.Font printFont = new System.Drawing.Font
("Arial", 35, System.Drawing.FontStyle.Regular);

// Draw the content.
System.IO.StreamReader streamReader=new StreamReader(this.streamToPrint);
text=streamReader.ReadToEnd();
e.Graphics.DrawString(text,printFont,System.Drawing.Brushes.Black,e.MarginBounds.X,e.MarginBounds.Y);
break;
case "image":
System.Drawing.Image image=System.Drawing.Image.FromStream(this.streamToPrint);
int x=e.MarginBounds.X;
int y=e.MarginBounds.Y;
int width=image.Width;
int height=image.Height;
if((width/e.MarginBounds.Width)>(height/e.MarginBounds.Height))
{
width=e.MarginBounds.Width;
height=image.Height*e.MarginBounds.Width/image.Width;
}
else
{
height=e.MarginBounds.Height;
width=image.Width*e.MarginBounds.Height/image.Height;
}
System.Drawing.Rectangle destRect=new System.Drawing.Rectangle(x,y,width,height);
e.Graphics.DrawImage(image,destRect,0,0,image.Width,image.Height,System.Drawing.GraphicsUnit.Pixel);
break;
default:
break;
}

}

}
}

<!-- Search Google -->
Google 输入您的搜索字词 提交搜索表单
<!-- google_ad_client = "pub-7330597899926046"; google_ad_format = "350x30_sdo"; google_link_target = 2; google_color_bg = "ffffff"; google_color_link = "000000"; google_encoding = "GB2312"; //-->
<!-- Search Google --> <!-- google_ad_client = "pub-7330597899926046"; google_ad_slot = "8791774696"; google_ad_width = 468; google_ad_height = 60; //-->
分享到:
评论

相关推荐

    使用PrintDocument控件和PrintDialog控件实现打印文档内容

    在Windows应用程序开发中,我们经常需要实现打印功能,让用户能够将屏幕上的文本、图像或者其他信息输出到打印机。本文将详细讲解如何使用`PrintDocument`控件和`PrintDialog`控件来实现这一功能,主要针对.NET框架...

    C# PrintDialog-PrintDocument

    在C#中实现打印功能(C#中PrintDialog-PrintDocument的使用

    wpf分页打印打印(使用printDialog.PrintDocument打印flowDocument文档)第一版本

    wpf分页打印打印(使用printDialog.PrintDocument打印flowDocument流文档)第一版本。以后功能完善了更新第二版本。 使用此方法打印:printDialog.PrintDocument(((IDocumentPaginatorSource)flowDocument)....

    C#实现打印与打印预览功能

    ### C# 实现打印与打印预览功能详解 #### 一、引言 在Windows应用程序开发中,文档的打印功能是非常重要的一项需求。以往,这项工作往往比较复杂且难以实现。随着.NET Framework的发展,Microsoft提供了丰富的打印...

    C#实现打印功能_c#打印_

    本文将深入探讨如何在C#中实现打印功能,包括基本概念、API使用以及实际代码示例。 1. 基本概念 在Windows环境中,打印功能主要依赖于Windows操作系统提供的打印服务。C#通过.NET Framework的System.Drawing命名...

    C#打印功能(PrintDialog,PrintDocument).rar_C#打印_PrintDialog_c# printD

    `PrintDialog` 和 `PrintDocument` 是.NET框架中的两个关键组件,用于实现用户友好的打印体验。本教程将详细介绍这两个类以及如何在C#项目中利用它们进行打印操作。 `PrintDialog` 类是Windows Forms控件,它提供了...

    printDocument控件打印预览加载图片

    总结,`PrintDocument`控件是C#中实现打印和预览功能的关键,结合其他控件和库,我们可以处理各种类型的数据,如文字、图像甚至Excel表格。理解其工作原理和使用方式,能够帮助我们创建出高效且用户友好的打印应用。

    打印功能,打印一个图形,printDocument和printPreviewDialog的应用,C#源代码

    在C#编程中,打印功能是桌面应用中不可或缺的一部分,特别是在需要将数据或图形输出到纸质媒介时。本文将深入探讨如何使用`PrintDocument`和`PrintPreviewDialog`类来实现这一目标。这两个类是.NET Framework提供的...

    在C#中实现打印功能

    在C#中实现打印功能是开发桌面应用时经常会遇到的需求,尤其在财务、报表或文档管理等场景下。本文将详细讲解如何利用C#的.NET Framework或.NET Core库来实现打印功能。 首先,C#提供了System.Drawing命名空间,...

    C#打印类PrintDocument、PrintDialog、PrintPreviewDialog使用示例

    结合以上内容,我们可以了解到在C#中实现打印功能的基本流程:首先创建并配置`PrintDocument`对象,定义打印内容;然后根据需求决定是否使用`PrintDialog`来获取用户打印设置;如果需要预览,可以使用`...

    C#实现打印功能源代码

    在C#编程语言中,实现打印功能是一项常见的需求,它涉及到Windows应用程序与系统硬件设备——打印机的交互。本文将深入探讨如何使用C#来编写源代码以实现这一功能,主要涉及的技术点包括: 1. **System.Drawing命名...

    C#实现打印功能实例详解

    C#实现打印功能主要依赖于.NET Framework提供的System.Drawing.Printing命名空间中的类,尤其是PrintDialog和PrintDocument两个关键组件。本文将深入解析如何在C#应用程序中实现打印功能。 首先,PrintDialog控件...

    C#使用控件调用打印机实现打印预览、打印

    总之,C#提供了强大的打印支持,通过合理使用PrintDocument、PrintPreviewDialog和PrintDialog等控件,开发者可以轻松实现打印预览和打印功能。对于更复杂的打印需求,如多页、多文档的打印,可以进一步研究.NET ...

    C# 打印DataGridView的实现(完整实例)

    本实例将详细讲解如何实现C#中打印`DataGridView`的功能,包括设置不同的打印样式、支持多页打印以及保证打印效果美观、可靠。 首先,我们需要引入`System.Drawing.Printing`命名空间,它包含了用于打印操作的相关...

    C#基于printDocument控件实现打印

    在Windows Forms应用程序中,我们通常使用`System.Drawing.Printing`命名空间中的`PrintDocument`控件来实现打印功能。本篇文章将深入探讨如何利用`PrintDocument`控件在C#中实现自定义打印,包括设置字体、颜色、...

    C#实现打印和打印预览功能

    在C#编程中,实现打印和打印预览功能是常见的需求,尤其是在开发桌面应用程序时。这一功能使得用户能够将程序中的数据或者报表输出到物理打印机或者进行预览,以检查打印效果。以下将详细介绍如何使用C#来实现这些...

    C#实现打印及打印预览功能

    在实现打印功能时,要考虑到可能出现的异常情况,如打印机未连接、无纸、墨盒空等。添加适当的错误处理代码,以优雅地处理这些问题。 通过以上步骤和知识点,初学者可以理解并实现C#中的打印和打印预览功能。提供...

    C#实现打印功能代码实现下载

    在C#中实现打印功能的第一步是创建一个`PrintDocument`对象,并为其添加`PrintPage`事件处理程序。`PrintDocument`类位于`System.Drawing.Printing`命名空间下,是实现文档打印的核心组件。 #### 代码示例: ```...

    C# 操作datagridview对excel的导入导出并实现打印功能

    接下来是实现打印功能。在Windows Forms中,打印通常通过PrintDocument类来完成。首先,定义一个事件处理程序来生成打印内容,然后在PrintDocument的PrintPage事件中,使用Graphics对象绘制DataGridView的内容。以下...

    WPF 实现用PrintDialog将窗口内容全部打印出来

    然后,我们将在DrawingContext中使用VisualBrush绘制窗口内容。 ```csharp DrawingVisual drawingVisual = new DrawingVisual(); using (DrawingContext drawingContext = drawingVisual.RenderOpen()) { ...

Global site tag (gtag.js) - Google Analytics