在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
来源:互联网 发布:htc锁屏软件 编辑:程序博客网 时间:2024/05/22 13:13
在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();
}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;
}
}}
}
例子如下:
使用时先创建PrintService类的实例,然后调用void StartPrint(Stream streamToPrint,string streamType)函数开始打印。其中streamToPrint是要打印的内容(字节流),streamType是流的类型(txt表示普通文本,image表示图像);
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)实用的类
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- 在 C# 中实现打印功能(C# 中 PrintDialog,PrintDocument 的使用)
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用
- 在C#中使用PrintDialog可以很方便的实现程序的打印功能。
- C#打印(PrintDocument、PrintDialog、PageSetupDialog、PrintPreviewDialog)
- C#打印(PrintDocument、PrintDialog、PageSetupDialog、PrintPreviewDialog)
- C#中使用[GDI+]+PrintDocument实现打印
- C#中使用PrintDialog方便的实现程序的打印功能
- C#打印(PrintDocument、PrintDialog、PageSetupDialog、PrintPreviewDialog)
- JavaScript实现获取radio的值
- 全面理解javascript的caller,callee,call,apply概念[摘]
- Better Builds with Maven【摘】
- 局域网文件传输软件
- ETL学习笔记之二:ETL与BI
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- 小榕是英雄还是败类
- 怎样用C#实现完整文档打印功能
- 给初学者:VB如何操作WEB页的浏览提交———二:自动填写更多内容
- “Visual Studio.net已检测到指定的Web服务器运行的不是Asp.net1.1版。您将无法运行Asp.net Web应用程序或服务”问题的解决方法
- j2EE 实体Bean笔记
- 软键盘(1)
- SQL 嵌套游标的使用
- 一个普通IT人的十年回顾