C#学习之旅(八)
文章目录
1、Windows打印技术
Windows应用程序中提供了一组打印控件,包括PageSetupDialog、PrintDialog、PrintDocument、PrintPreviewControl和PrintPreviewDialog控件,开发程序时,开发人员可以直接使用这些控件控制打印的文本和数据格式。
1.1、PageSetupDialog控件
PageSetupDialog控件用于设置页面详细信息以便打印。允许用户设置边框和边距调整量、页眉和页脚以及纵向或横向打印。在介绍如何通过PageSetupDialog控件设置页面之前,要介绍该控件的一些属性,通过这些属性可以方便地对页面进行设置。
注意:
在创建PageSetupDialog类的实例时,读 | 写属性将被设置为初始值。将AllowMargins、AllowOrientation、AllowPaper、AllowPrinter、ShowNework属性设置为true,将Document、MinMargins、PageSettings、PrinterSettings属性设置为null,将ShowHelp属性设置为false。
下面对这几种常见的属性进行详细的介绍。
1、Document属性
Document属性用于获取页面设置的PrintDocument。
语法如下:
public PrintDocument Document{get; set;}
属性值:从中获得页面设置的PrintDocument。
2、AllowMargins属性
AllowMargins属性用于设置是否启用对话框的边框部分。
语法如下:
public bool AllowMargins{get; set;}
属性值:如果启用了对话框的边距部分,则为true;否则为false。默认为true。
3、AllowOrientation属性
AllowOrientation属性用于设置是否启用对话框的方向部分(横向对纵向)。
语法如下:
public bool AllowOrientation{get; set;}
属性值:如果启用了对话框的方向部分,则为true;否则为false。默认为true。
4、AllowPaper属性
AllowPaper属性用于设置是否启用对话框的纸张部分(纸张大小和纸张来源)。
语法如下:
public bool AllowPaper(get; set)
属性值:如果启用了对话框的纸张部分,则为true;否则为false。默认为true。
5、AllowPrinter属性
AllowPrinter属性用于设置是否启用“打印机”按钮。
语法如下:
public bool AllowPrinter{get; set;}
实例如下:
namespace Test01
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
pageSetupDialog1.Document = printDocument1;
//启用边距
this.pageSetupDialog1.AllowMargins = true;
//启用对话框方向部分
this.pageSetupDialog1.AllowOrientation = true;
//启用对话框的纸张部分
this.pageSetupDialog1.AllowPaper = true;
//启用“打印机”按钮
this.pageSetupDialog1.AllowPrinter = true;
//显示页面设置对话框
this.pageSetupDialog1.ShowDialog();
}
}
}
1.2、PrintDialog控件
PrintDialog控件用于选择打印机、选择要打印的页以及确定其他与打印相关的设置。通过PrintDialog控件可以选择全部打印、打印选定的页范围或打印选定内容。
注意:
PrintDialog类与System.Windows.Forms.PrintDialog不同,后者用于Windows窗体应用程序。
下面对这几种常见的属性进行详解介绍。
1、Document属性
Document属性用于获取PrinterSettings的PrintDocument对象。
语法如下:
public PrintDocument Document{get; set;}
属性值:PrintSettings的PrintDocument对象。
2、AllowCurrentPage属性
AllowCurrentPage属性用于设置是否显示“当前页”选项按钮。
语法如下:
public bool AllowCurrentPage{get; set;}
属性值:如果显示“当前页”选项,则为true;否则为false。默认为false。
3、AllowPrintToFile属性
AllowPrintToFile属性用于设置是否启用“打印到文件”复选框。
语法如下:
public bool AllowPrintToFile{get; set;}
属性值:如果启用“打印到文件”复选框,则为true;否则为false。默认为true。
4、AllowSelection属性
AllowSelection属性用于设置是否启用“选项”选项按钮。
语法如下:
public bool AllowSelection{get; set;}
属性值:如果启用“选择”选项按钮,则为true;否则为false。默认为false。
5、AllowSomePages属性
AllowSomePages属性用于设置是否启用“页”选项按钮。
语法如下:
public bool AllowSomePages{get; set;}
属性值:如果启用“页”选项按钮,则为true;否则为false。默认为false。
实例如下:
namespace Test02
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//设置PrintDialog控件的Document属性,设置操作文档
printDialog1.Document = printDocument1;
//启用"打印到文件"复选框
printDialog1.AllowPrintToFile = true;
//显示“当前项”按钮
printDialog1.AllowCurrentPage = true;
//启用"选择按钮"
printDialog1.AllowSelection = true;
//启用"页"按钮
printDialog1.AllowSomePages = true;
printDialog1.ShowDialog();
}
}
}
1.3、PrintDocument控件
PrintDocument控件设置打印的文档。PrintDocument控件中比较常见的是控件的PrintPage事件和Print方法。PrintPage事件在需要为当前页打印的输出时发生。调用Print方法开始文档的打印进程。
注意:
在打印开始后,通过DefaultPageSettings属性更改页设置对正在打印的页没有任何影响。
namespace Test03
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.DrawString("蝶恋花", new Font("宋体", 15), Brushes.Black, 350, 80);
e.Graphics.DrawLine(new Pen(Color.Black, (float)3.00), 100, 185, 720, 185);
e.Graphics.DrawString("伫倚危楼风细细,望极春愁,黯黯生天际。", new Font("宋体", 12), Brushes.Black, 110, 195);
e.Graphics.DrawString("草色烟光残照里,无言谁会凭阑意。", new Font("宋体", 12), Brushes.Black, 110, 220);
e.Graphics.DrawString("拟把疏狂图一醉,对酒当歌,强乐还无味。", new Font("宋体", 12), Brushes.Black, 110, 245);
e.Graphics.DrawString("衣带渐宽终不悔。为伊消得人憔悴。", new Font("宋体", 12), Brushes.Black, 110, 270);
e.Graphics.DrawLine(new Pen(Color.Black, (float)3.00), 100, 300, 720, 300);
}
private void button1_Click(object sender, EventArgs e)
{
if (MessageBox.Show("是否要预览打印文档", "打印预览", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
//开启操作系统的防锯齿功能
this.printPreviewDialog1.UseAntiAlias = true;
//设置要预览的文档
this.printPreviewDialog1.Document = this.printDocument1;
//打开预览窗口
printPreviewDialog1.ShowDialog();
}
else
{
//调用Print方法直接打印文档
this.printDocument1.Print();
}
}
}
}
1.4、PrintPrviewControl控件
PrintPreviewControl控件用于按文档打印时的外观显示文档。该控件只为用户提供一个预览打印文档的功能,因此通常只有在希望编写自己的打印预览用户界面时才使用PrintPreviewControl控件。PrintPreviewControl控件比较重要的是Document属性,该属性用于设置要预览的文档,语法如下:
public PrintDocument Document { get; set; }
属性值:PrintDocument表示要预览的文档。
注意:
在创建PrintPreviewControl类的实例时,一些读 | 写属性被设置为初始值。如AutoZoom为true、Document为null、Columns为1、Row为0、StartPage为0。
实例如下:
namespace Test04
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
printPreviewControl1.Document = printDocument1;
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
string str = Application.StartupPath.Substring(0, Application.StartupPath.Substring(0, Application.StartupPath.LastIndexOf("\\")).LastIndexOf("\\"));
str += @"\img1.jpg";
e.Graphics.DrawImage(Image.FromFile(str), 10,10, 800,1250);
}
}
}
1.5、PrintPreviewDialog控件
PrintPreviewDialog控件用于显示文档打印后的外观。该控件包含打印、放大、显示一页或多页和关闭此对话框的按钮。PrintPreviewDialog控件的常见属性和方法有Document属性,UseAntiAlias属性和ShowDialog()方法。
1、Document属性
该属性用于设置要预览的文档,语法如下:
public PrintDocument Document { get; set; }
属性值:PrintDocument表示要预览的文档。
例如:设置PrintPreviewDialog控件的Decument属性为printDocument1,代码如下。
printPreviewDialog1.Document = this.printDocument1; //设置预览文档
2、UseAntiAlias属性
该属性用于设置打印是否使用操作系统的防锯齿功能,语法如下:
public bool UseAntiAlias { get; set;}
属性值:如果使用防锯齿功能,则为true;否则为false。
例如:设置UseAntiAlias属性为true,开启防锯齿功能,代码如下:
printRreviewDialog1.UseAntiAlias = true; //设置UseAntiAlias属性为true,开启防锯齿功能。
3、ShowDialog方法
该方法将窗体显示为模式对话框,并将当前活动窗口设置为它的所有者,语法如下:
public DialogResult ShowDialog ()
返回值:DialogResult值之一。
调用PrintPreviewDialog控件的ShowDialog()方法,显示预览窗口,代码如下。
printPreviewDialog1.ShowDialog(); //使用ShowDialog()方法、显示预览窗口