说在前面的话:
对于这块功能可能每一个公司都要用到,这次自己整理的资料来源于 自己的经历过程,网络资料的查找以及别人写的代码
如有不对之处请指教 本人也是初学者 呵呵
一般用到的控件就是3个 Button ,printDocument1,printPreviewDialog1
为了大家有个整体的印象,下面给大家一段来自别人的代码 写的很详细
写在前面:.Net自带有打印组件,但是,要使用也不是很容易的,东找西找都没找到一个合适的例子来说明问题,那几个控件怎样用也不清楚。于是笔者小试了打印预览功能,并提供了打印预览的Demo供大家参考,仅仅使用PrintDocument和PrintPreviewDialog这两个控件,并组合非常简单的代码实现。值得说明的是,打印功能是要自己写,也就是要GUI编程的,而不是只传一个控件的引用给打印组件,组件就会自己打印出来。效果图
GUI程序部分所做的工作是,获取表示边距以内的页面部分的矩形区域,然后按一定的大小(Size)缩小,画一个红色的方框,再区域缩小,绘画字体。
界面操作
新建一个Form,拖入一个Button(默认命名为button1),从打印组件那里,拖入一个PrintDocument控件(默认命名为printDocument1),一个PrintPreviewDialog控件(默认命名为printPreviewDialog1),设置printPreviewDialog1的Document为printDocument1。然后转到button1的Click事件,双击,自动生成方法button1_Click(object sender, EventArgs e),转到printDocument1的PrintPage事件,双击,自动生成方法printDocument1_PrintPage。
测试代码
程序运行后,点击button1执行printPreviewDialog1的展示,这时候,生成效果图中的主窗口和按钮栏,不过中间区域是空的。接着,加载printDocument1_PrintPage方法,设置白色区域的图形和字体。调用DrawRectangle方法绘画方形,然后调用DrawString方法绘画字符,注意到在绘画这两个事物的过程中,其所在区域(Rectangle)是变化的,使用Inflate来调整区域大小,这个函数原意是放大指定的大小,而如果大小是负数是,也就是缩小指定的大小了。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
//设置Graphics实例
Graphics g = e.Graphics;
Pen _pen = new Pen(Color.Red);
Rectangle rect = e.MarginBounds;
//缩小区域
rect.Inflate(new Size(-100, -100));
g.DrawRectangle(_pen, rect);
Font _font = new Font(new FontFamily("宋体"), 100);
rect.Inflate(new Size(-100, -10));
g.DrawString("打印测试", _font, Brushes.Blue, rect);
e.HasMorePages = false;
//释放资源
_font.Dispose();
_pen.Dispose();
}
private void button1_Click(object sender, EventArgs e)
{
//显示预览对话
this.printPreviewDialog1.ShowDialog();
}
}