C#如何实现条码打印c 实现等功能

您所在的位置: &
C#实现打印功能实例详解
C#实现打印功能实例详解
C#实现打印功能是通过什么来实现的?C#实现打印功能的步骤是什么呢?那么本文就向你介绍这方面的内容。
C#实现打印功能是通过使用PrintDialog控件来实现的。任何物有所值的应用程序都会拥有某种打印功能,不管是基本的打印功能还是更为复杂的打印功能,比如允许用户只打印所选的文本或某个范围内的页面。本节将探讨一下实现基本的C#打印功能,看看哪些类有助于打印文件中的文本。C#实现打印功能的过程是:在调用PrintDialog控件的ShowDialog方法之前,必须先设置PrintDialog类的Document属性。该属性接受一个PrintDocument类,以获得打印机设置并将输出内容发送给打印机。PrintDocument类需要System.Drawing.Printing名称空间,因此,在定义使用PrintDocument类的对象前,必须包含这个名称空间。
C#实现打印功能具体的操作步骤如下:
创建一个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&=&docToP&&
调用PrintDialog的ShowDialog函数显示打印对话框:DialogResult&result&=&PrintDialog1.ShowDialog();&&
根据用户的选择,开始打印:if&(result==DialogResult.OK) &&{ &docToPrint.Print(); &&}&
C#实现打印功能的实例如下:
使用时先创建PrintService类的实例,然后调用void StartPrint(Stream streamToPrint,string streamType)函数开始打印。其中streamToPrint是要打印的内容(字节流),streamType是流的类型(txt表示普通文本,image表示图像);using&S &using&System.Drawing.P &using&System.Windows.F &using&System.IO;& &&namespace&EDImageSystem &{ &&&&&&&&public&class&PrintService &&{ &public&PrintService() &{ &&&&&&&&this.docToPrint.PrintPage+= &new&PrintPageEventHandler(docToPrint_PrintPage); &}&&&private&System.Drawing.Printing.PrintDocument&docToPrint&=& &&new&System.Drawing.Printing.PrintDocument(); &&&private&System.IO.Stream&streamToP &string&streamT& &&&&public&void&StartPrint(Stream&streamToPrint,string&streamType) &{& &&&this.streamToPrint=streamToP &&this.streamType=streamT &&&&&&System.Windows.Forms.PrintDialog&PrintDialog1= &new&PrintDialog&();&&PrintDialog1.AllowSomePages&=&true;& &&&&&PrintDialog1.ShowHelp&=&true;& &&&&&&&&&&&PrintDialog1.Document&=&docToP &&&&DialogResult&result&=&PrintDialog1.ShowDialog(); &&&&&&if&(result==DialogResult.OK) &&{ &docToPrint.Print();&&}& &&}& &&&&private&void&docToPrint_PrintPage(object&sender,& &&System.Drawing.Printing.PrintPageEventArgs&e) &&{& &&&&&&&&&&&&switch(this.streamType) &&{ &case&"txt": &&string&text&=&null; &&System.Drawing.Font&printFont&=&new&System.Drawing.Font &("Arial",&35,&System.Drawing.FontStyle.Regular);& &&&&&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.W &&int&height=image.H &&if((width/e.MarginBounds.Width)&( &height/e.MarginBounds.Height)) &&{ &width=e.MarginBounds.W &height=image.Height*e.MarginBounds.Width/image.W &&} &&else&&{ &height=e.MarginBounds.H &width=image.Width*e.MarginBounds.Height/image.H &&} &&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; &&} && &}& &&} &}&&
实现C#打印的具体实现步骤和具体的实例演示就向你介绍到这里,希望对你了解实现C#打印以及学习C#有所帮助。
【编辑推荐】
【责任编辑: TEL:(010)】
关于的更多文章
Angular.js 是一个MV*(Model-View-Whatever,不管是MVC或者MVVM
本次的专刊为大家提供了Oracle最新推出的Java SE 8详细的开发教程,从解读到探究Java 8最新
总结一下Java I/O文件读写基本类相关知识和概念。对于
今天是被国际上众多科技公司和软件企业承认的业内人士
互联网一大真理便是,有痛点的地方就有机会。现在最想
本书是目前中文版本第一个真正介绍PHP 5及MySQL 5新增语法与功能的权威宝典!
本书本着精、全、要三宗旨,从理论中延伸,从实践
51CTO旗下网站锐浪报表工具:快速开发复杂报表与票据打印, 支持ASP.NET报表,Java报表等(广州锐浪软件技术有限公司)
订阅产品信息
了解锐浪报表的最新消息,请在下面输入您的email,然后点订阅按钮将您的email发送给锐浪软件。锐浪软件只会发送与报表相关的信息,并承诺不将此email提供给任何第三方。
.中国核工业集团
.中国电力科学研究院
.北京京云万峰
&&非常感谢您们开发的报表工具,非常好用,易上手,功能强大。
&&从第一个版本我就在使用,它是我见过得最好的报表工具,我几乎每天都登录您们的网站查询是否有最新版本,并在第一时间下载。
&&是您们为国产软件献出力量,是国产软件应该大力扶持的对象!
&&Grid++Report报表软件做的非常好,更适合国内的使用习惯。
&&有个项目的报表怎么做都不合用户的要求,水晶报表也不能满足,使用贵公司的报表工具后,轻易满足了客户的报表要求。
&&这个报表工具真的太伟大了,从2.4版到现在的4.0版我都一直在用,我用在VC开发的数据库应用中。
&&开始抱着试试看的态度,下载以后发现这个报表组件真是太棒了,至少可以说我还没见过国内做得比这个还好的报表组件!
&&我比较感兴趣的是多层表头、票据套打、交叉表等,这些在
FastReport 和 QuikReport 上虽能实现,但技巧性太强,在锐浪报表上实现这些太轻松了。
&&...,评估结论为:简单、高效、速度快、客户端再设计容易。我们决定采用锐浪报表,并且对它寄予很高的期望。经过短短的一周时间,我们的产品就完成了新报表系统的整合。
Grid++Report 可用于开发桌面C/S报表与WEB报表(B/S报表),C/S报表开发适用于VB.NET、C#、VB、VC、Delphi等。WEB报表开发适用于ASP、ASP.NET、JSP/Java、PHP等,支持所有WEB服务器与数据库。开发桌面报表与WEB报表共享相同的开发知识与资源,大大提高报表开发效率。
除了提供报表打印、打印预览、数据导出等功能,还提供独有的。实现动态报表、多层表头报表、分组单元格合并报表、分栏报表、、交叉表及各种格式报表都非常简便。安装程序中提供了每种软件开发工具下的丰富例程与详尽的帮助。,。
WEB报表插件与C/S报表组件的特点
适用开发工具广泛:桌面报表开发:VB.NET、C#、VB、VC、Delphi等,WEB报表开发:ASP、ASP.NET、JSP(Java)、PHP等。提供了大量的例子报表与每种开发工具下的例子程序。
报表功能丰富:包括图表、条形码、子报表、RTF文本、图像、图形等功能。报表数据导出包括:Excel、RTF(Word)、PDF、图像、文本、html、CSV等。提供专业易用的可视化报表设计器。
多国语言集成支持与UNICODE编码支持,方便开发多国语言软件。
:不用单独开发报表查询显示功能,集成一体化实现报表开发中的查询显示、打印与打印预览、数据导出等任务,极大的减少整个报表系统的工作量,并保持报表不同输出方式的一致性。
:报表可以通过编程动态定义。报表打印有多种打印适应策略,横向分页输出功能解决超宽报表打印难题。有多种自动布局方式,报表内容自动适应打印页面。
实现表格报表非常方便:报表核心组件是一个有丰富数据展现功能的数据网格,轻松实现各种表格报表,不用繁琐的拼凑大量线段去输出表格线,也不存在表格线难对齐的烦恼。克服了其它条幅式报表工具不方便制作表格线报表的缺陷。
报表数据来源丰富,支持绑定与非绑定,既支持拉模式又支持推模式:设定报表的 OLE DB 数据源连接串与查询SQL,报表在运行时自动从数据源提取数据。也可以向报表填入数据,程序中所有的数据都可以提供给报表。
实现自由排列报表也一样方便:只要将明细网格的格设为自由格,就可以像其它的条幅式报表工具一样自由编排报表,既方便实现中国式表格报表,也能实现格式自由编排报表。
:提供专门用于票据套打设计的页面视图,将空白票据扫描图像作为设计背景图,可以快捷准确定位报表输出位置。
报表查询显示时可以与用户的交互:在报表查询显示时的事件中可以实现报表穿透(透视),实现报表数据的追本溯源。
系统稳定,运行性能高:历经多年持续开发,拥有了雄厚的用户基础,众多软件开发商选用,在众多领域应用。采用 VC++/ATL/WTL/COM 开发,保证了良好运行性能。WEB报表数据高效压缩,减小报表数据网络传输量。
:C/S报表发布文件小并且不依赖任何运行时库(两个DLL),支持所有 Windows 系统,分发完全免费。WEB报表发布只需上传报表插件安装包(CAB文件)到WEB服务器,客户端免安装,报表插件安装包正规数字签名,用户下载更方便更安全。
粤ICP备号 Copyright & (版权所有:广州锐浪软件技术有限公司)
地址:广州市天河区五山路135号519-04室
电话: 020-怎样用C#实现完整文档打印功能_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
&&¥1.00
喜欢此文档的还喜欢
怎样用C#实现完整文档打印功能
阅读已结束,如果下载本文需要使用
想免费下载本文?
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢
20080份文档GoldPrinter c#实现的打印的功能,其中包含BS和CS两种框架下都可以使 接口,非常实用 CSharp C#编程 182万源代码下载-
&文件名称: GoldPrinter
& & & & &&]
&&所属分类:
&&开发工具: C#
&&文件大小: 28 KB
&&上传时间:
&&下载次数: 61
&&提 供 者:
&详细说明:c#实现的打印的功能,其中包含BS和CS两种框架下都可以使用的接口,非常实用-c# implementation of the print function, which contains two kinds of BS and CS can be used under the framework of the interface, very useful
文件列表(日期:~)(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&GoldPrinter&&...........\GoldPrinter&&...........\...........\bin&&...........\...........\...\Debug&&...........\...........\...\.....\GoldPrinter.dll&&...........\...........\...\.....\GoldPrinter.pdb&&...........\...........\&&...........\...........\&&...........\...........\obj&&...........\...........\...\Debug&&...........\...........\...\.....\GoldPrinter.dll&&...........\...........\...\.....\GoldPrinter.pdb&&...........\...........\...\.....\TempPE&&...........\...........\...\GoldPrinter.csproj.FileList.txt&&...........\...........\&&...........\...........\printerpagesetting.dll&&...........\...........\Properties&&...........\...........\..........\&&...........\...........\&&...........\...........\&&...........\GoldPrinter.sln
&近期下载过的用户:
&相关搜索:
&输入关键字,在本站182万海量源码库中尽情搜索:
&[] - C#控件编程实例,提供了对下列按钮的重写CheckBox,ComboBox,GroupBox,DateTimePicker,PictureBox,RadioButton,TextBox,
&[] - 用CSharp实现发彩信的发送功能代码有界面的
&[] - 自由曲线图表、柱状图、饼图的实现与转换,基于一套简单的图形类库(源代码在内)。
&[] - C#中PrintDocument打印功能的实现。分页打印内容控制与排版控制。
本程序为通用打印程序,单据、会计凭证、发票清单、报表、任意复杂表格、合并表格如工矿企业合同都可以由系统提供的几个默
认打印对象组合打印。
&[] - 用C#写的报表程序,将数据库中的数据做成报表,并支持打印,数据库用SQL SERVER2000,供参考
&[] - 解决打印难题,用于学习C#中控件打印,值得研究!
&[] - 金质打印通,可以HtmlTable解析打印,XML定义打印效果图,Xml对象定义典型示例。内有源码。
&[] - 一款皮肤控件,通过它可以轻松创建属于自己的界面,简单实用
&[] - 免费web打印控件
支持页边距的设置,打印预览,感觉非常好页面导航:
→ 正文内容 c#实现用鼠标移动页面
c#打印预览控件中实现用鼠标移动页面功能代码分享
项目中需要实现以下功能:打印预览控件中,可以用鼠标拖动页面,以查看超出显示范围之外的部分内容,下面就是实现代码
该功能本来可以通过拉动水平和垂直滚动条来实现,但实际使用中,用户更趋向于直接用鼠标拖动页面来实现,很多看图类软件都有这种类似的功能。而.net的打印预览控件却很遗憾的没有提供这一功能,只来自己想办法来实现啦。
我的办法就是用代码来控制打印预览控件中的水平来垂直滚动条的位置,间接实现和用鼠标直接拖动滚动条一样的效果。
在实现这一功能的过程中,最大的困难是打印预览控件并没有让程序员直接调用的关于滚动条的方法或属性。所以只好向WinAPI求助了。
以下API函数和常量就是实现上述功能的关键了:
代码如下:[DllImport("user32.dll")]private static extern int SetScrollPos(IntPtr hwnd, int nBar, int nPos, bool bRedraw);[DllImport("user32.dll")]private static extern int GetScrollPos(IntPtr hwnd, int nBar);[DllImport("user32.dll")]private static extern bool PostMessage(IntPtr hWnd, int nBar, int wParam, int lParam);[DllImport("user32", CharSet = CharSet.Auto)]private static extern bool GetScrollRange(IntPtr hWnd, int nBar, out int lpMinPos, out int lpMaxPos);
private const int SB_HORZ = 0x0;private const int SB_VERT = 0x1;private const int WM_HSCROLL = 0x114;private const int WM_VSCROLL = 0x115;private const int SB_THUMBPOSITION = 4;
简单说明一下吧:
SetScrollPos:设置所指定滚动条中的滚动按钮的位置
GetScrollPos:获取指定滚动条的滚动按钮的位置
GetScrollRange:获取指定滚动条的滚动按钮的位置最大最小值
PostMessage:这个函数是关键中的关键,它负责向Windows控件发送相应的消息,以真正执行相应的操作。一些网友实现了滚动条中滑块位置的移动,但却没有引起控件中内容的移动,其原因就是因为没有调用这个函数,没有把移动内容的消息发送给控件。
SB_HORZ :代表水平滚动条
SB_VERT :代表垂直滚动条
WM_HSCROLL :代表水平滚动事件
WM_VSCROLL :代表垂直滚动事件
SB_THUMBPOSITION :至于这个常量,其含义我也不是很清楚,有知道的朋友欢迎回复给我。
好了,准备工作做好了,就可以开工了。
先声明几个变量: 代码如下:bool Preview_move =//是否按下鼠标,表示处理移动状态。Point MoveS//移动开始时,鼠标的坐标点Point MoveE//移动过程中鼠标的坐标点
在控件的MouseDown事件中,当鼠标按下时开始移动页面,并记下起始坐标点:
代码如下:private void previewer_MouseDown(object sender, MouseEventArgs e){&&& Preview_move =&&& MoveStart = e.L}
在控件的MouseUp事件中,记得当鼠标放开后要置回非移动状态:
代码如下:private void previewer_MouseUp(object sender, MouseEventArgs e){&&& Preview_move =
以下就是实现移动页面的关键部分了,在控件的MouseMove实现用代码间接控制控件的滚动条位置并实现页面实时移动:
代码如下:private void previewer_MouseMove(object sender, MouseEventArgs e){&&& if (!Preview_move)&&& MoveEnd = e.L&&& int MinH,MaxH,MinV,MaxV;//获得鼠标在X和Y两个方向上的移动量。除以10是为是让移动页面的速度变慢一点。而前面的负号则是用来调节页面移动方向的。&&& int MoveX = -(MoveEnd.X - MoveStart.X)/10; &&& int MoveY = -(MoveEnd.Y - MoveStart.Y)/10; //获取滚动条的最大最小位置和当前位置&&& GetScrollRange(previewer.Handle, 0, out MinH, out MaxH);&&& GetScrollRange(previewer.Handle, 1, out MinV, out MaxV);&&& int PosH = GetScrollPos(previewer.Handle, 0);&&& int PosV = GetScrollPos(previewer.Handle, 1);//计算最终滚动条的位置(注意最终位置不要超出最大最小值的范围)&&& int PosH1 = PosH + MoveX;&&& if (PosH1 &= MinH && PosH1 &= MaxH)&&& {& SetScrollPos(previewer.Handle, SB_HORZ, PosH1, true);//设置滚动条的位置& PostMessage(previewer.Handle, WM_HSCROLL, SB_THUMBPOSITION + 0x10000 * PosH1, 0);//告诉控件移动页面内容到相应的位置上&&& }
&&& int PosV1 = PosV + MoveY;&&& if (PosV1 &= MinV && PosV1 &= MaxV)&&& {& SetScrollPos(previewer.Handle, SB_VERT, PosV1, true);& PostMessage(previewer.Handle, WM_VSCROLL, SB_THUMBPOSITION + 0x10000 * PosV1, 0);&&& }}OK,一个能用鼠标实时移动页面内容的打印预览功能作好了。其实,对于.net中很多控件都可以用相似的方面实现对滚动条的控制
您可能感兴趣的文章:
上一篇:下一篇:
最 近 更 新
热 点 排 行
12345678910

我要回帖

更多关于 条码打印c 实现 的文章

 

随机推荐